CS0445 de erro do compilador

Não é possível modificar o resultado de uma conversão conversão unboxing

O resultado de uma conversão conversão unboxing é uma variávelde temporária.O compilador impede que você modifique essas variáveis, porque qualquer modificação acabariam quando a variável temporária desaparece.Para corrigir isso, declare uma nova de tipo de valor variável para armazenar a expressão intermediário e atribuir o resultado da conversão conversão unboxing para essa variável.

O código a seguir gera 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;
}