プロパティ (property)

アクセサ (accessor)

set {accessor-body}
get {accessor-body}

自動実装プロパティ (Auto-Implemented Property)

プロパティの宣言を簡略化できます。

※自動実装プロパティがサポートされるのは、C# 3.0 (Visual Studio 2008) 以降です。

使用方法

アクセサの実装コードをセミコロン (;) に置き換えることで、自動実装プロパティとなります。なお自動実装プロパティには、getとsetの両方のアクセサが必須です。

通常のプロパティ 自動実装プロパティ
class MyClass
{
    private int a;

    public int A
    {
        get { return a; }
        set { a = value; }
    }
}
class MyClass
{
    public int A
    {
        get;
        set;
    }
}
※プロパティのフィールド (バッキング フィールド) は、コンパイラによって自動的に作成されます。

アクセス制限

アクセサはgetとsetの両方が必須となるため、それを削除することはできず、アクセス修飾子を付加することでアクセス制限を実現します。

読み取り専用
通常のプロパティ 自動実装プロパティ
class MyClass
{
    private int a;

    public int A
    {
        get { return a; }
    }
}
class MyClass
{
    public int A
    {
        get;
        private set;
    }
}

インデクサ (Indexers) / 引数を取るプロパティ

インデクサとは、クラスのインスタンスに対して、配列の要素のようにインデックスを付けてアクセスできるようにする機能です。

public class MyClass
{
    double[] x = new double[10];

    public double this[int index] // プロパティの名前をthisとする
    {
        get
        {
            return x[index];
        }
        set
        {
            x[index] = value;
        }
    }
}

static void Main(string[] args)
{
    MyClass myClass = new MyClass();

    myClass[5] = 100; // インデックスを付けてアクセスできる
    double b = myClass[5];
}
Microsoft Learnから検索