Kompilatorfel CS0445

Det går inte att ändra resultatet av en konvertering av avboxning

Resultatet av en konvertering av avboxning är en tillfällig variabel. Kompilatorn hindrar dig från att ändra sådana variabler eftersom alla ändringar försvinner när den tillfälliga variabeln försvinner. Du åtgärdar detta genom att deklarera en ny värdetypsvariabel för att lagra mellanliggande uttryck och tilldela resultatet av konverteringen för avboxning till variabeln.

Följande kod genererar CS0455.

// 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;  
}