自動實作的屬性 (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,以便將物件設為不可變的。 如需詳細資訊,請參閱 如何:使用自動實作的屬性來實作輕量型類別 (C# 程式設計手冊)。
自動實作的屬性 (Property) 可以有屬性 (Attribute),但支援欄位顯然不能,因為無法從原始程式碼存取那些欄位。 如果您必須在屬性 (Property) 的支援欄位上使用屬性 (Attribute),只要建立一般屬性 (Property) 即可。