编译器错误 CS1918
更新:2007 年 11 月
错误消息
无法使用对象初始值设定项为类型为“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;
}
}