Hat null
einen Typ? Wie wird ein Nullwert intern dargestellt? Was passiert im folgenden Code?In .Net/C#, ist null stark typisiert?
void Foo(string bar) {...}
void Foo(object bar) {...}
Foo((string)null);
Edit: Die Antworten waren bisher unspezifisch und zu hochrangig. Ich verstehe, dass ein Objekt vom Referenztyp aus einem Zeiger auf dem Stapel besteht, der auf eine Stelle im Heap zeigt, die einen Sync-Block-Index, einen Typ-Handle und die Felder des Objekts enthält. Wenn ich eine Instanz eines Objekts auf null
setze, wo genau zeigt der Zeiger auf dem Stapel auf? Und in der Code-Snippet, ist die Besetzung einfach durch den C# -Compiler verwendet, um zu entscheiden, welche Überlast zu nennen, und es gibt keine wirklich Casting von null geht?
Ich bin auf der Suche nach einer eingehenden Antwort von jemandem, der die CLR-Interna versteht.
Also was genau wird auf dem Stapel sein, wenn ich mich auf 'null' beziehe? –
@Matt - Bearbeitet, um weitere Details auf niedriger Ebene hinzuzufügen. Reicht das aus? –
@Greg: Danke - Ich war auf der Arbeit beschäftigt und hatte keine Zeit, IL und die ECMA-Spezifikationen selbst zu überprüfen. Dies hat mein intellektuelles Jucken gekratzt. –