Automático-Implementadas Propriedades (guia de programação C#)
No C# 3.0 e posterior, implementado em auto propriedades fazem declaração de propriedade mais concisa quando nenhuma lógica adicional é necessária nos acessadores de propriedade. Elas também permitem criar objetos de código do cliente. Quando você declara uma propriedade, conforme mostrado no exemplo a seguir, o compilador cria um campo de apoio particular e anônimo que só pode ser acessado através da propriedade get e set acessadores.
Exemplo
O exemplo a seguir mostra uma classe simples que tem algumas propriedades de auto-implementada:
// 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;
}
}
A classe que é mostrada no exemplo anterior é mutável. Código do cliente pode alterar os valores de objetos depois que forem criados. Em classes complexas que contêm o comportamento significativo (métodos), bem como dados, geralmente é necessário ter propriedades públicas. No entanto, para pequenas classes ou estruturas que basta encapsulam um conjunto de valores (dados) e têm pouca ou nenhuma de comportamentos, é recomendável para tornar os objetos imutáveis, declarando o acessador set como particular. Para obter mais informações, consulte How to: Implementar uma classe leve com Automático-implementado Propriedades (guia de programação C#).
Atributos são permitidos nas propriedades de auto-implementado, mas, obviamente, não em campos de backup, pois esses não são acessíveis a partir de seu código-fonte. Se você deve usar um atributo no campo de uma propriedade de backup, basta crie uma propriedade regular.