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

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

この例では、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# 言語仕様」を参照してください。言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。

参照

関連項目

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

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

概念

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