Error del compilador CS1649
Actualización: noviembre 2007
Mensaje de error
Los miembros del campo de sólo lectura 'identificador' no se pueden pasar como out o ref (excepto en un constructor)
Members of readonly field 'identifier' cannot be passed ref or out (except in a constructor)
Este error se produce cuando se pasa una variable a una función que es miembro de un campo readonly como argumento ref o out. Esto no se permite porque la función puede modificar los parámetros ref o out. Para resolver este error, quite la palabra clave readonly del campo o no pase los miembros del campo readonly a la función. Por ejemplo, puede intentar crear una variable temporal que se pueda modificar y pasarla como argumento ref, como se muestra en el ejemplo siguiente.
Ejemplo
El código siguiente genera el error CS1649:
// CS1649.cs
public struct Inner
{
public int i;
}
class Outer
{
public readonly Inner inner = new Inner();
}
class D
{
static void f(ref int iref)
{
}
static void Main()
{
Outer outer = new Outer();
f(ref outer.inner.i); // CS1649
// Try this code instead:
// int tmp = outer.inner.i;
// f(ref tmp);
}
}