Auto-implementado propriedades (guia de programação do C#)
No C# 3.0 e posterior, implementado por 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 em 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 comportamentos, é recomendável para tornar os objetos imutáveis, declarando o acessador set como particular.Para obter mais informações, consulte Como: implementar uma classe simplificada com propriedades de Auto-implementado (guia de programação do C#).
Atributos são permitidos nas propriedades de auto-implementado, mas é claro que não nos campos de apoio, pois esses não acessíveis a partir de seu código-fonte.Se você precisar usar um atributo sobre o campo de apoio de uma propriedade, basta crie uma propriedade regular.