自動實作的屬性 (C# 程式設計手冊)

在 C# 3.0 與以後的版本,自動實作屬性讓屬性宣告更為簡明,而且在屬性的存取子 (Accessor) 中也不需要額外的邏輯。 這些存取子也可以讓用戶端程式碼建立物件。 當您宣告如下列範例所示的屬性時,編譯器便會建立私用 (Private) 的匿名支援欄位,讓您只能透過屬性的 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;
    }
}

前一個範例中示範的類別是可變動的。 用戶端程式碼可以在物件建立之後變更物件中的值。 在包含大規模行為 (方法) 與資料的複雜類別中,通常必須要使用公用屬性 (Property)。 然而,對於只是封裝一組值 (資料) 與只有少數或沒有任何行為的小型類別或結構,則建議將 set 存取子宣告為 private,以便將物件設為不可變的。 如需詳細資訊,請參閱HOW TO:使用自動實作的屬性來實作輕量型類別 (C# 程式設計手冊)

自動實作的屬性 (Property) 可以有屬性 (Attribute),但支援欄位顯然不能,因為無法從原始程式碼存取那些欄位。 如果您必須在屬性 (Property) 的支援欄位上使用屬性 (Attribute),只要建立一般屬性 (Property) 即可。

請參閱

參考

屬性 (C# 程式設計手冊)

修飾詞 (C# 參考)