コンパイラ エラー CS0200

プロパティまたはインデクサー 'property' は読み取り専用なので、割り当てることはできません

プロパティに値を割り当てようとしましたが、プロパティに set アクセサーがないか、または割り当てがコンストラクターの外側でした。 set アクセサーを追加してエラーを解決します。 詳細については、「読み取り/書き込みのプロパティを宣言および使用する方法」を参照してください。

次の例では CS0200 が生成されます。

// CS0200.cs
public class Example
{
    private int _mi;
    int I
    {
        get
        {
            return _mi;
        }
        // uncomment the set accessor and declaration for _mi
        /*
        set
        {
            _mi = value;
        }
        */
    }

    public static void Main()
    {  
        Example example = new Example();
        example.I = 9;   // CS0200
    }
}  

次の例では、自動実装プロパティオブジェクト初期化子が使用されており、引き続き CS0200 が生成されます。

// CS0200.cs
public class Example
{
    int I
    {
        get;
        // uncomment the set accessor and declaration
        //set;
    }

    public static void Main()
    {  
        var example = new Example
        {
            I = 9   // CS0200
        };
    }
}

読み取り専用のプロパティまたはインデクサー "property" に割り当てるには、set アクセサーを追加するか、オブジェクトのコンストラクターで値を割り当てます。

public class Example
{
    int I { get; }

    public Example()
    {
        I = -7;
    }
}