プロパティ (C# プログラミング ガイド)

更新 : 2007 年 11 月

プロパティは、プライベート フィールドの値の読み取り、書き込み、または計算を行う、柔軟な機構が用意されたメンバです。プロパティは、パブリック データのメンバと同様に使用できますが、実際はアクセサという特殊なメソッドです。メソッドの安全性と柔軟性を維持しながら、簡単にデータにアクセスできます。

この例では、TimePeriod クラスに期間が格納されています。このクラスには、内部的に秒単位で期間が格納されていますが、クライアントが時間単位で期間を指定できる Hours というプロパティも用意されています。Hours プロパティのアクセサでは、時間と秒の変換が実行されます。

使用例

class TimePeriod
{
    private double seconds;

    public double Hours
    {
        get { return seconds / 3600; }
        set { seconds = value * 3600; }
    }
}


class Program
{
    static void Main()
    {
        TimePeriod t = new TimePeriod();

        // Assigning the Hours property causes the 'set' accessor to be called.
        t.Hours = 24;

        // Evaluating the Hours property causes the 'get' accessor to be called.
        System.Console.WriteLine("Time in hours: " + t.Hours);
    }
}
// Output: Time in hours: 24

プロパティの概要

  • プロパティによって、クラスの実装や検査のコードを隠ぺいしたままで、値の取得と設定を行うことができるようになります。

  • get プロパティ アクセサはプロパティ値を返すときに使用され、set アクセサは新しい値を割り当てるときに使用されます。2 つのアクセサには異なるアクセス レベルを指定できます。詳細については、「非対称アクセサのアクセシビリティ (C# プログラミング ガイド)」を参照してください。

  • value キーワードは、set インデクサで割り当てられている値を定義するときに使用されます。

  • set メソッドが実装されないプロパティは、読み取り専用です。

  • カスタムのアクセサ コードを必要としない単純なプロパティでは、自動実装するプロパティの使用というオプションを検討してください。詳細については、「自動実装するプロパティ (C# プログラミング ガイド)」を参照してください。

関連項目

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 1.6.7.2 プロパティ

  • 10.2.9.1 プロパティ用に予約されているメンバ名

  • 10.7 プロパティ

参照

概念

C# プログラミング ガイド

プロパティのデザイン

参照

プロパティの使用 (C# プログラミング ガイド)

インデクサ (C# プログラミング ガイド)