Compilerfehler CS0445

Das Ergebnis einer Unboxing-Konvertierung kann nicht geändert werden.

Das Ergebnis einer Unboxing-Konvertierung ist eine temporäre Variable. Der Compiler verhindert die Änderung solcher Variablen, da jede Änderung behoben werden würde, wenn die temporäre Variable verschwindet. Um dieses Problem zu beheben, deklarieren Sie eine neue Werttypvariable zum Speichern des intermediären Ausdrucks, und weisen Sie das Ergebnis der Unboxing-Konvertierung dieser Variablen zu.

Mit dem folgenden Code wird CS0455 generiert.

// CS0445.CS  
class UnboxingTest  
{  
    public static void Main()  
    {  
        Point p;  
        p.x = 1;  
        p.y = 2;  
        object obj = p;  
        // The following line generates CS0445, because the result  
        // of unboxing obj is a temporary variable.  
        ((Point)obj).x = 2;  
  
        // The following lines resolve the error.  
  
        // Store the result of the unboxing conversion in p2.  
        Point p2;
        p2 = (Point)obj;  
        // Then you can modify the unboxed value.  
        p2.x = 2;  
    }  
}  
  
struct Point  
{  
    public int x, y;  
}