0 out of 2 rated this helpful - Rate this topic

Compiler Error CS0445

Updated: March 2009

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

Date

History

Reason

March 2009

Clarified the example.

Customer feedback.

September 2008

Added new example and explanation.

Customer feedback.

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ