Propiedades autoimplementadas (Guía de programación de C#)
En C# 3.0 y versiones posteriores, las propiedades autoimplementadas hacen que la declaración de propiedad sea más concisa cuando no se requiere ninguna lógica adicional en los descriptores de acceso de la propiedad. También permiten al código de cliente crear objetos. Al declarar una propiedad tal y como se muestra en el ejemplo siguiente, el compilador crea un campo de respaldo privado y anónimo al que solamente puede obtenerse acceso a través de los descriptores de acceso get y set de la propiedad.
Ejemplo
En el ejemplo siguiente, se muestra una clase simple que tiene algunas propiedades autoimplementadas:
// 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;
}
}
La clase que se muestra en el ejemplo anterior es mutable. El código de cliente puede cambiar los valores de los objetos después de su creación. En las clases complejas que contienen comportamientos significativos (métodos) y datos, suele ser necesario tener propiedades públicas. Sin embargo, para clases pequeñas o structs que simplemente encapsulan un conjunto de valores (datos) y tienen pocos comportamientos o ninguno, se recomienda convertir los objetos en inmutables declarando el descriptor de acceso set como private. Para obtener más información, vea Cómo: Implementar una clase ligera con propiedades autoimplementadas (Guía de programación de C#).
Los atributos se permiten en propiedades autoimplementadas pero obviamente no en los campos de respaldo, ya que el código fuente no puede obtener acceso a ellos. Si debe utilizar un atributo en el campo de respaldo de una propiedad, simplemente cree una propiedad normal.