编译器错误 CS1918
无法使用对象初始值设定项为类型为“type”的属性“name”的成员赋值,因为它是值类型。
尝试使用对象初始值设定项初始化某种结构类型的属性,而该结构类型本身是所初始化的类的属性时,会发生此错误。
- 如果必须在对象初始值设定项中完全初始化属性的字段,请将结构更改为类类型。 否则,在使用对象初始值设定项创建对象之后,在单独方法调用中初始化结构成员。
下面的示例生成 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;
}
}