自動実装するプロパティ (C# プログラミング ガイド)

C# 3.0 以降では、自動実装するプロパティを使用すると、プロパティ アクセサーで追加のロジックが必要ない場合に、プロパティ宣言がより簡単になります。 また、クライアント コードでオブジェクトを作成できるようになります。 次の例のようなプロパティを宣言する場合、コンパイラはプライベートな匿名バッキング フィールドを作成します。このフィールドにアクセスするには、プロパティの get アクセサーと set アクセサーを使用する必要があります。

使用例

次の例は、いくつかの自動実装プロパティを持つ簡単なクラスを示しています。


// This class is mutable. Its data can be modified from
// outside the class.
class Customer
{
    // Auto-Impl Properties for trivial get and set
    public double TotalPurchases { get; set; }
    public string Name { get; set; }
    public int CustomerID { get; set; }

    // Constructor
    public Customer(double purchases, string name, int ID)
    {
        TotalPurchases = purchases;
        Name = name;
        CustomerID = ID;
    }
    // Methods
    public string GetContactInfo() {return "ContactInfo";}
    public string GetTransactionHistory() {return "History";}

    // .. Additional methods, events, etc.
}

class Program
{
    static void Main()
    {
        // Intialize a new object.
        Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );

        //Modify a property
        cust1.TotalPurchases += 499.99;
    }
}

前の例に示したクラスは変更可能です。 オブジェクト内の値は、作成後にクライアント コードで変更できます。 重要な動作 (メソッド) とデータを含む複雑なクラスでは、パブリック プロパティの指定が必要になる場合があります。 ただし、値セット (データ) をカプセル化するだけの、動作をほとんど含まない小さなクラスや構造体では、set アクセサーを private と宣言することにより、オブジェクトを変更不可にすることをお勧めします。 詳細については、「方法 : 自動実装するプロパティを使用して簡易クラスを実装する (C# プログラミング ガイド)」を参照してください。

属性は、自動実装するプロパティには使用できますが、バッキング フィールドには使用できません。これは、ソース コードからバッキング フィールドにアクセスできないためです。 プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します。

参照

参照

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

修飾子 (C# リファレンス)