Básicamente, el compilador convierte el código en algo como esto:
private string <__>firstName;
public string FirstName
{
get { return <__>firstName; }
set { <__>firstName = value; }
}
Eso es poco probable que sea el nombre exacto, pero el uso de corchetes angulares en el nombre es importante, porque lo convierte en un nombre indecible . (Esa es una terminología no oficial, pero ampliamente utilizada; no sé si Eric Lippert realmente la inventó, o si fue la primera persona en usarla en algo que leí). Es un nombre que no es un identificador de C# válido, pero con lo que el CLR está bastante satisfecho. Esto tiene dos ventajas:
- El compilador no tiene que preocuparse por las colisiones de nombres con sus identificadores
- El compilador no tiene que preocuparse acerca de si usted está tratando de hacer referencia al campo de tu propio código, no puedes, ¡porque el nombre es indescriptible!
Se utiliza la misma técnica para todo tipo de otros códigos generados - tipos anónimos, funciones anónimas, bloques de iterador etc.
Este es un duplicado. Ver enlaces relacionados en el lateral. – leppie
posible duplicado de [C# 3.0: Propiedades automáticas: cuál sería el nombre de la variable privada creada por el compilador] (http://stackoverflow.com/questions/1277018/c-sharp-3-0-automatic-properties-what- ser-el-nombre-de-variable-privada-c) – nawfal