Reputation: 81
int? t = 0;
cmd.Parameters.AddWithValue("@Res", ref t);
I get an error in the second line:
argument 2 may not be passed with ref keyword.
Upvotes: 8
Views: 12901
Reputation: 1500495
You can only pass an argument by reference with ref
if the parameter is a ref
parameter as well. AddWithValue
doesn't have any ref
parameters, so you can't use it that way. Note that you have to specify ref
when calling a method if a parameter has the ref
modifier. So:
public void WithRef(ref int x) {}
public void WithoutRef(int x) {}
...
int y = 0;
// Valid
WithRef(ref y);
WithoutRef(y);
// Invalid
WithRef(y);
WithoutRef(ref y);
Basically, there's no way of telling an ADO.NET command parameter to track the current value of a variable - after all, that variable could be a local variable which will be "gone" by the time you use the command.
Instead, just compute the right value and then set it for the parameter value.
Upvotes: 10