C# Error
CS1628 – Cannot use ref, out, or in parameter ‘{0}’ inside an anonymous method, lambda expression, query expression, or local function
Reason for the Error & Solution
Cannot use in ref or out parameter ‘parameter’ inside an anonymous method, lambda expression, or query expression
This error occurs if you use an in
, ref
, or out
parameter inside an anonymous method block. To avoid this error, use a local variable or some other construct.
The following sample generates CS1628:
// CS1628.cs
delegate int MyDelegate();
class C
{
public static void F(ref int i)
{
MyDelegate d = delegate { return i; }; // CS1628
// Try this instead:
// int tmp = i;
// MyDelegate d = delegate { return tmp; };
}
public static void Main()
{
}
}