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()
{
}
}