La posibilidad de definir Propiedades Automáticas es una, al menos, interesante, por no decir curiosa. Se trata de la posibilidad de dejarle al compilador la tarea de generar el código para manejar la asignación (set) y la recuperación (get) de un campo privado asociado a la propiedad.
Me explico con un ejemplo. En C# 2005 teníamos que declarar una propiedad más o menos así:
class x
{
protected int _myprop;
public int myprop
{
get {return _myprop;}
set {_myprop = value;}
}
}
Esto puede quedar reducido a una sola línea:
class x
{
public int myprop {get; set;}
}
Yo, la verdad, no tengo muy clara la utilidad de esta construcción en C#. La idea de usar propiedades es ofrecer cierto nivel de abstracción mediante ocultamiento de los miembros de la clase que no son parte de la interfaz, y tiene mucho sentido cuando una propiedad afecta el comportamiento de otras, pero en el contexto, la única diferencia es que el miembro se expondría como property y no como variable.
Las propiedades automáticas están sumamente limitadas: no se tiene acceso al miembro privado subyacente, y además es requerido implementar toda la propiedad como automática (no se puede implementar el set automático y el get por código, o viceversa).