Error del compilador CS1612

Actualización: noviembre 2007

Mensaje de error

No se puede modificar el valor devuelto de 'expresión' porque no es una variable
Cannot modify the return value of 'expression' because it is not a variable

Se intentó modificar un tipo de valor que es el resultado de una expresión intermedia. Debido a que dicho valor no es persistente, queda sin modificar.

Para resolver este error, almacene el resultado de la expresión en un valor intermedio o utilice un tipo de referencia para la expresión intermedia.

Ejemplo

En el código siguiente se genera el error CS1612.

// CS1612.cs
public struct MyStruct
{
    public int Width;
}

public class ListView
{
    public MyStruct Size
    {
        get { return new MyStruct(); }
    }
}

public class MyClass
{
    public MyClass()
    {
        ListView lvi;
        lvi = new ListView();
        lvi.Size.Width = 33;  // CS1612
        // Use this instead:
        // MyStruct temp = lvi.Size;
        // temp.Width = 33;
    }

    public static void Main() {}
}