każdej chwili utworzyć typ w języku C#, automatycznie pobiera wypełniane wyściełane zera. W przypadku klasy (typ referencyjny) oznacza to wskaźnik zerowy. Więc, technicznie, za każdym razem gdy pracujesz z klas, następujące są identyczne:
MyClass class;
MyClass class2 = null;
Z typów wartości (dowolny struktury, w tym int/pływaka/podwójne/etc), typ przepuszcza zerami, więc następujące są równoważne:
int i;
int j = 0;
jednak w metodzie sprawdza kompilatora, aby zobaczyć, jeśli już przypisana wartość do swoich typach przed użyciem. Jeśli nie następuje, kompilator będzie narzekać:
int i;
Console.WriteLine{"{0}",i);
Technicznie powyższe powinno być w porządku - ale ponieważ jest to częstym źródłem błędu programisty, kompilator specjalnie sprawdza nieprzypisanych zmiennych lokalnych i narzeka. Jest to jednak skarga dotycząca kompilacji, a nie kwestia CLR. Możesz zrobić IL, który robi powyższe, i działa dobrze.
_Fields_ są zawsze automatycznie inicjowane do wartości domyślnej typu pola, która w przypadku int wynosi zero. Pola są uważane za zdecydowanie przypisane; możesz przeczytać ich zawartość nawet przed wyraźnym przydziałem. _Lokalne_ nie są uważane za zdecydowanie przypisane; jesteś zobowiązany do zrobienia czegoś, co przypisuje wartość lokalnego, zanim jego zawartość zostanie odczytana. Szczegółowe informacje znajdują się w sekcji "określony przydział" w specyfikacji C#. –