Fondamentalmente il compilatore converte il codice in qualcosa di simile a questo:
private string <__>firstName;
public string FirstName
{
get { return <__>firstName; }
set { <__>firstName = value; }
}
Questo è improbabile che sia il nome esatto, ma l'uso di parentesi angolari nel nome è importante - perché lo rende un nome indicibile . (Questa è una terminologia non ufficiale, ma ampiamente usata - non so se Eric Lippert in realtà l'abbia coniato, o se fosse la prima persona ad usarlo in qualcosa che ho letto.) È un nome che non è un identificatore C# valido, ma di cui il CLR è abbastanza soddisfatto. Questo ha due vantaggi:
- Il compilatore non ha bisogno di preoccuparsi di conflitti di denominazione con tuoi identificatori
- Il compilatore non ha bisogno di preoccuparsi se si sta cercando di fare riferimento al campo in il tuo codice personale - non puoi, perché il nome è indicibile!
Utilizza la stessa tecnica per tutti i tipi di altro codice generato - tipi anonimi, funzioni anonime, blocchi iteratore ecc
fonte
2012-02-13 07:05:02
Questo è un duplicato. Vedi i link correlati sul lato. – leppie
possibile duplicato di [C# 3.0: Proprietà automatiche - quale sarebbe il nome della variabile privata creata dal compilatore] (http://stackoverflow.com/questions/1277018/c-sharp-3-0-automatic-properties-what- sarebbe-il-nome-della-variabile-privata-c) – nawfal