get キーワードは、プロパティのアクセサーメソッド、またはプロパティ値かインデクサー要素を返すインデクサーを定義します。 詳しくは、「プロパティ」、「自動的に実装されるプロパティ」、および「インデクサー」をご覧ください。
C# 言語リファレンスには、C# 言語の最新リリース バージョンが記載されています。 また、今後の言語リリースのパブリック プレビューの機能に関する初期ドキュメントも含まれています。
このドキュメントでは、言語の最後の 3 つのバージョンまたは現在のパブリック プレビューで最初に導入された機能を特定します。
ヒント
C# で機能が初めて導入された時期を確認するには、 C# 言語バージョン履歴に関する記事を参照してください。
プロパティの get アクセサーと set アクセサーがプライベート バッキング フィールドの値を設定または取得する以外の操作を実行しない単純な場合は、自動的に実装されるプロパティに対する C# コンパイラのサポートを利用します。 次の例では、 Hours を自動的に実装されるプロパティとして実装します。
class TimePeriod3
{
public double Hours { get; set; }
}
重要
インターフェイス プロパティ宣言に自動的に実装されるプロパティや、部分プロパティの実装宣言を使用することはできません。 コンパイラは、自動的に実装されたプロパティに一致する構文を、実装宣言ではなく宣言宣言として解釈します。
前の例のように、多くの場合、get アクセサーは値を返す 1 つのステートメントで構成されます。 式形式のメンバーとして get アクセサーを実装できます。 次の例では、get アクセサーと set アクセサーの両方を、式形式のメンバーとして実装しています。
class TimePeriod2
{
private double _seconds;
public double Seconds
{
get => _seconds;
set => _seconds = value;
}
}
アクセサー本体の 1 つを実装する必要がある場合があります。 フィールドに基づくプロパティを使用して、コンパイラが一方のアクセサーを生成しながら、もう一方のアクセサーを手動で作成できるようにします。 C# 14 で追加された field キーワードを使用して、コンパイラ合成バッキング フィールドにアクセスします。
class TimePeriod4
{
public double Hours {
get;
set => field = (value >= 0)
? value
: throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
}
}
次の例では、get という名前のプロパティの set アクセサーと Seconds アクセサーを定義しています。 また、_seconds という名前のプライベート フィールドを使って、プロパティの値を戻しています。
class TimePeriod
{
private double _seconds;
public double Seconds
{
get { return _seconds; }
set
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
}
_seconds = value;
}
}
}
C# 言語仕様
詳細については、「C# 言語の仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。
関連項目
.NET