Beachten Sie, dass dies nur für Felder gilt, nicht für lokale Variablen - diese können erst gelesen werden, wenn sie zugewiesen wurden, zumindest innerhalb von C #. Tatsächlich initialisiert die CLR Stack-Frames auf 0, wenn Sie ein entsprechendes Flag gesetzt haben - was ich glaube, dass es standardmäßig ist. Es ist jedoch nur selten zu beobachten - Sie müssen durch einige grotte Hacks gehen.
Der Standardwert von int
ist 0 - und für jeden Typ ist es im Wesentlichen der Wert, der durch ein Bitmuster voller Nullen dargestellt wird. Bei einem Werttyp entspricht dies dem Aufruf des parameterlosen Konstruktors und bei einem Referenztyp null.
Grundsätzlich löscht die CLR den Speicher mit Nullen.
Dies ist auch der Wert von default(SomeType)
für einen beliebigen Typ.
Der Standardwert für int ist 0.
Hier finden Sie die vollständige Liste der Standardwerte pro Typ: Ссылка
String ist ein Referenztyp. Int ist ein Werttyp. Referenztypen sind einfach ein Zeiger auf den Stack, der auf den Heap ausgerichtet ist und einen Wert enthalten kann oder auch nicht. Ein Werttyp ist nur der Wert auf dem Stapel, aber er muss immer auf etwas gesetzt werden.
Der Wert für eine unitäre Variable vom Typ T
ist immer default(T)
. Für alle Referenztypen ist dies null und für die Werttypen siehe den Link, den @Blorgbeard gepostet hat (oder schreibe etwas Code, um es zu überprüfen).
Tags und Links c# unassigned-variable non-nullable