Compilerfehler CS0445

Das Ergebnis einer Unboxingkonvertierung kann nicht geändert werden.

Das Ergebnis einer Unboxingkonvertierung ist eine temporäre Variable. Der Compiler verhindert die Änderung solcher Variablen, da beim Verwerfen der temporären Variable auch jede Änderung verworfen wird. Um dieses Problem zu umgehen, verwenden Sie eine neue Werttypvariable zum Speichern des Zwischenausdrucks, und weisen Sie der neuen Variable den Wert zu.

Mit dem folgenden Code wird der Fehler CS0455 generiert:

// CS0445.CS
class UnboxingTest 
    {
        public static void Main() 
        {
            Point p;
            p.x = 1;
            object obj = p;
// Generates CS0445:
            ((Point)obj).x = 2; 

           // Use the following lines instead.
           // Point p2;
           // p2 = (Point)obj;
           // p2.x = 2;

        }
    }