編譯器錯誤 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;
}
}