Varnika gupta
Varnika gupta

Reputation: 81

i am getting an error Argument 2 may not be passed with ref keyword while using ado.net

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

Answers (1)

Jon Skeet
Jon Skeet

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

Related Questions