Właściwości zaimplementowane automatycznie (Przewodnik programowania w języku C#)
W C# 3.0 lub nowszej, realizowane automatycznie właściwości sprawiają, że deklaracji właściwości bardziej zwarta, gdy w akcesorach właściwości jest wymagane nie dodatkowe logiki.Umożliwiają one kod klienta do tworzenia obiektów.Przy deklarowaniu właściwości, jak pokazano w poniższym przykładzie, kompilator tworzy pole oporowe prywatnych, anonimowe jest możliwy tylko za pośrednictwem właściwości get i set akcesorów.
Przykład
W poniższym przykładzie przedstawiono prostą klasę, zawierający niektóre właściwości wykonywane automatycznie:
// 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;
}
}
Klasa, która jest wyświetlana w poprzednim przykładzie jest mutable.Kod klienta można zmienić wartości w obiektach, po ich utworzeniu.W złożonych klas, które zawierają znaczące zachowanie (metody), jak również dane jest często konieczne właściwości publiczne.Jednakże dla małych klas lub struktur, po prostu hermetyzacji zestawu wartości (dane) i zostały niewielkiej lub żadnej zachowania, zalecane jest dokonanie obiekty niezmienne przez zadeklarowanie akcesor zestawu jako prywatnego.Aby uzyskać więcej informacji, zobacz Porady: implementowanie klasy lekkiej przy użyciu automatycznie implementowanych właściwości (Przewodnik programowania w języku C#).
Atrybuty są dozwolone właściwości auto wdrożone, ale oczywiście nie na polach wykonywania kopii, ponieważ te nie są dostępne z kodu źródłowego.Jeśli w polu oporowe właściwość, należy użyć atrybutu, wystarczy utworzyć właściwość regularnych.