C# Error
CS1918 – Members of property ‘{0}’ of type ‘{1}’ cannot be assigned with an object initializer because it is of a value type
Reason for the Error & Solution
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;  
    }  
}  
 
															 
								 
								