Compiler Error CS0445
Cannot modify the result of an unboxing conversion
The result of an unboxing conversion is a temporary variable. The compiler prevents you from modifying such variables because any modification would go away when the temporary variable goes away. To fix this, use a new value-type variable to store the intermediate expression, and assign the value to the new variable.
The following code generates CS0455:
namespace ConsoleApplication1
{
// CS0445.CS
class UnboxingTest
{
public static void Main()
{
Point p;
p.x = 1;
p.y = 5;
object obj = p;
// Generates CS0445:
((Point)obj).x = 2;
// Use the following lines instead.
//Point p2;
//p2 = (Point)obj;
//p2.x = 2;
//obj = p2;
// Verify the change.
//Console.WriteLine(((Point)obj).x);
}
}
public struct Point
{
public int x;
public int y;
}
}
Change History
Date |
History |
Reason |
---|---|---|
March 2009 |
Clarified the example. |
Customer feedback. |
September 2008 |
Added new example and explanation. |
Customer feedback. |