Leer en inglés

Compartir vía


Error del compilador CS0445

No se puede modificar el resultado de una conversión unboxing

El resultado de una conversión unboxing es una variable temporal. El compilador evita que se modifiquen estas variables porque cualquier modificación desaparecería al desaparecer la variable temporal. Para corregir esto, declare una nueva variable de tipo de valor para almacenar la expresión intermedia y asigne el resultado de la conversión unboxing a esa variable.

El código siguiente genera el error 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;  
}