次の方法で共有


field - フィールドに基づくプロパティ宣言

重要

field キーワードは、C# 13 のプレビュー機能です。 fieldコンテキスト キーワードを使用するには、.NET 9 を使用し、<LangVersion>要素をプロジェクト ファイルにpreviewするように設定する必要があります。

field という名前のフィールドがあるクラスでは、field キーワード機能を使用する場合は注意が必要です。 新しい field キーワードは、プロパティ アクセサーのスコープ内の field という名前のフィールドをシャドウします。 field変数の名前を変更するか、@ トークンを使用してfield識別子を@fieldとして参照できます。 詳細については、field キーワード機能の仕様を参照してください。

C# 13 のプレビュー機能として追加されたコンテキスト キーワード fieldは、プロパティ アクセサーで使用して、プロパティのコンパイラ合成バッキング フィールドにアクセスできます。 この構文を使用すると、 get または set アクセサーの本体を定義し、コンパイラが自動的に実装されるプロパティと同様に他のアクセサーを生成できます。

fieldコンテキスト キーワードを追加すると、範囲チェックなどの利点を自動的に実装されたプロパティに追加するためのスムーズなパスが提供されます。 この方法を次の例に示します。

class TimePeriod4
{
    public double Hours {
        get;
        set => field = (value >= 0)
            ? value
            : throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
    }
}

Hours プロパティは、自動的に実装されるプロパティとして実装できます。 次に、負の値から保護する必要がある場合に検出します。 fieldを使用し、set アクセサーで範囲チェックを提供します。 バッキング フィールドを手動で宣言し、 get アクセサーの本文を指定する必要はありません。

詳細については、プロパティインデクサーに関するページを参照してください。

C# 言語仕様

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