Error del compilador CS1655

Actualización: noviembre 2007

Mensaje de error

No se pueden pasar los campos de 'variable' como argumento out o ref porque es un 'tipo de variable de sólo lectura'
Cannot pass fields of 'variable' as a ref or out argument because it is a 'readonly variable type'

Este error se produce cuando se intenta pasar un miembro de una variable foreach, using o fixed a una función como argumento ref u out. No se permite hacerlo porque estas variables se consideran de sólo lectura en estos contextos.

El código siguiente genera el error CS1655:

// CS1655.cs
struct S 
{
   public int i;
}

class CMain
{
  static void f(ref int iref)
  {
  }
  
  public static void Main()
  {
     S[] sa = new S[10];
     foreach(S s in sa)
     {
        CMain.f(ref s.i);  // CS1655
     }
  }
}