プロパティ (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 アクセサのみを持つ場合は書き込み専用プロパティ、これら両方のアクセサを持つ場合は読み取り/書き込みプロパティになります。