Error del compilador CS1628

Actualización: noviembre 2007

Mensaje de error

No se pueden utilizar los parámetros ref ni out 'parámetro' dentro de un método anónimo, una expresión lambda o una expresión de consulta
Cannot use ref or out parameter 'parameter' inside an anonymous method, lambda expression, or query expression

Este error se produce si se utiliza un parámetro ref u out dentro de un bloque de métodos anónimos. Para evitarlo, utilice una variable local o alguna otra construcción.

El código siguiente genera el error 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()
  {
     
  }
}