コンパイラ エラー CS1918

型 'type' のプロパティ 'name' のメンバーは、値の型であるため、オブジェクト初期化子と共に割り当てることはできません。

このエラーは、それ自体が初期化されるクラスのプロパティである構造体型のプロパティを初期化するためにオブジェクト初期化子を使用しようとしたときに発生します。

このエラーを解決するには

  1. オブジェクト初期化子でプロパティのフィールドを完全に初期化する必要がある場合は、構造体をクラス型に変更します。 それ以外の場合は、オブジェクト初期化子を使用してオブジェクトを作成した後に、別個のメソッド呼び出しで構造体メンバーを初期化します。

次の例では、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;  
    }  
}  

関連項目