Error del compilador CS1651

Actualización: noviembre 2007

Mensaje de error

Los campos del campo de sólo lectura estático 'identificador' no se pueden pasar como ref o out (excepto en un constructor estático)
Fields of static readonly field 'identifier' cannot be passed ref or out (except in a static constructor)

Este error aparece si pasa una variable a una función que es miembro de un campo de sólo lectura estático como argumento ref. Puesto que la función puede modificar los parámetros ref, no se permite esto. Para resolver este error, quite la palabra clave readonly del campo o no pase los miembros del campo de sólo lectura a la función. Por ejemplo, pruebe a crear una variable temporal que se pueda modificar y pásela como un argumento ref, como se muestra en el siguiente ejemplo.

En el código siguiente se genera el error CS1651:

// CS1651.cs
public struct Inner
  {
    public int i;
  }

class Outer
{  
  public static readonly Inner inner = new Inner();
}

class D
{
   static void f(ref int iref)
   {
   }

   static void Main()
   {
      f(ref Outer.inner.i);  // CS1651
      // Try this instead:
      // int tmp = Outer.inner.i;
      // f(ref tmp);
   }
}