プロパティ (C# と Java の比較)

更新 : 2007 年 11 月

C# のプロパティは、いわゆる get アクセサ メソッドや set アクセサ メソッドを通じてプライベート フィールドにアクセスできる、クラス、構造体、またはインターフェイスの名前付きメンバです。

name というプライベート変数へのアクセスを抽出する、Animal クラスの Species というプロパティを宣言するコード例を次に示します。

public class Animal
{
    private string name;

    public string Species
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}

多くの場合、プロパティは、アクセス先の内部メンバと同じ名前になりますが、上のケースで Name のように大文字で始まるか、または内部メンバの名前が下線 (_) で始まります。また、set アクセサで使用されている value という暗黙のパラメータにも注意してください。このパラメータは、基底のメンバ変数の型を持ちます。

アクセサをサポートしない .NET Framework ベースの言語との互換性を維持するために、アクセサは、実際には get_X() メソッドおよび set_X() メソッドとして内部で表現されます。プロパティを次のように定義すると、その値を簡単に取得または設定できます。

class TestAnimal
{
    static void Main()
    {
        Animal animal = new Animal();
        animal.Species = "Lion";                   // set accessor
        System.Console.WriteLine(animal.Species);  // get accessor

    }
}

プロパティが、get アクセサのみを持つ場合は読み取り専用プロパティ、set アクセサのみを持つ場合は書き込み専用プロパティ、これら両方のアクセサを持つ場合は読み取り/書き込みプロパティになります。

参照

概念

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

参照

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

その他の技術情報

Java 開発者のための C# プログラミング言語