Zasadniczo kompilator konwertuje kod na coś takiego:
private string <__>firstName;
public string FirstName
{
get { return <__>firstName; }
set { <__>firstName = value; }
}
to jest mało prawdopodobne, aby być dokładną nazwę, ale użycie nawiasów ostrych w nazwie jest ważne - ponieważ sprawia, że jest to niewymowna nazwa . (To nieoficjalna terminologia, ale szeroko stosowana - nie wiem, czy Eric Lippert ją ukuł, czy był po prostu pierwszą osobą, która użyła go w czymś, co przeczytałem.) Jest to nazwa, która nie jest prawidłowym identyfikatorem C#, ale z której CLR jest zadowolony. Że ma dwie zalety:
- Kompilator nie trzeba się martwić o kolizji nazewnictwa z swoimi identyfikatorów
- Kompilator nie trzeba się martwić o to, czy starasz się odnieść do pola w twój własny kod - nie możesz, bo nazwa jest niewypowiedziana!
Wykorzystuje tę samą technikę dla wszelkiego rodzaju innego kodu wygenerowanego - anonimowych typów, funkcje anonimowe, bloki iteracyjnej itp
To jest duplikatem. Zobacz powiązane linki z boku. – leppie
możliwy duplikat [C# 3.0: Właściwości automatyczne - jaka byłaby nazwa zmiennej prywatnej utworzonej przez kompilator] (http://stackoverflow.com/questions/1277018/c-sharp-3-0-automatic-properties-what- to-be-the-name-of-private-variable-c) – nawfal