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.

Jon Skeet
people
quotationmark

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.

people

See more on this question at Stackoverflow