Compiler Error CS1918

Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.

This error occurs when you try to use an object initializer to initialize the properties of a struct type that is itself a property of the class that is being initialized.

To correct this error

  • If you must fully initialize the fields of the property in the object initializer, change the struct to a class type. Otherwise, initialize the struct members in a separate method call after you create the object by using the object initializer.

Example

The following example generates CS1918:

// cs1918.cs
public struct MyStruct
{
    public int i;

}
public class Test
{
    private MyStruct str = new MyStruct();
    public MyStruct Str
    {
        get
        {
            return str;
        }
    }
    public static int Main()
    {
        Test t = new Test { Str = { i = 1 } }; // CS1918
        return 0;
    }
}

See Also

Reference

Object and Collection Initializers (C# Programming Guide)