init (C# リファレンス)

C# 9 以降では、init キーワードによってプロパティ内またはインデクサー内で "アクセサー" メソッドが定義されます。 init のみのセッターでは、オブジェクトの構築時のみ、プロパティまたはインデクサー要素に値が割り当てられます。 使用例を含む詳細については、「プロパティ」、「自動実装プロパティ」、および「インデクサー」を参照してください。

次の例では、Seconds という名前のプロパティの get アクセサーと init アクセサーを定義しています。 また、_seconds という名前のプライベート フィールドを使って、プロパティの値を戻しています。

class InitExample
{
     private double _seconds;

     public double Seconds
     {
         get { return _seconds; }
         init { _seconds = value; }
     }
}

多くの場合、前の例のように、init アクセサーは値を割り当てる 1 つのステートメントで構成されます。 式形式のメンバーとして init アクセサーを実装できます。 次の例では、get アクセサーと init アクセサーの両方を、式形式のメンバーとして実装しています。

class InitExampleExpressionBodied
{
    private double _seconds;

    public double Seconds
    {
        get => _seconds;
        init => _seconds = value;
    }
}

プロパティの get アクセサーと init アクセサーがプライベート バッキング フィールドの値の設定と取得以外の操作を実行しない単純な場合では、自動実装プロパティに対する C# コンパイラのサポートを利用できます。 次の例では、自動実装プロパティとして Hours を実装しています。

class InitExampleAutoProperty
{
    public double Hours { get; init; }
}

C# 言語仕様

詳細については、「C# 言語の仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。

関連項目