編譯器錯誤 CS1918
更新:2007 年 11 月
錯誤訊息
型別 'type' 的屬性 'name' 成員無法以物件初始設定式進行指派,因為它是實值型別。
結構 (Struct) 型別本身是正在初始化之類別 (Class) 的屬性,而如果您嘗試使用物件初始設定式來初始化該結構型別的屬性,則會發生這個錯誤。
若要更正這個錯誤
- 如果必須完整初始化物件初始設定式中之屬性的欄位,請將結構變更為類別型別。否則,在您使用物件初始設定式建立物件之後,請使用不同的方法呼叫來初始化結構成員。
範例
下列範例會產生 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;
}
}