In C# 3.0 können Sie null zu int zuweisen? Typ (? in CLR int ist ein struct):C# -Wertyp initialisiert mit Null
int? a = null;
aber wenn Sie eine benutzerdefinierte Struktur definieren:
struct MyStruct
{
}
gibt es einen Fehler bei der Erstellung dieses Codes:
MyStruct a = null;
Der Fehler lautet wie folgt:
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
Während int? ist eine Struktur in CLR es ist irgendwie nicht intuitiv, dass wir ihm null zuweisen können. Ich nehme an, dass Null implizit Cassed oder Boxed zu einem certian int? Wert, der den Nullwert darstellt. Wie wird es genau gemacht? Wie kann ich MyStruct so erweitern, dass es möglich sein würde, die Zeile auszuführen:
MyStruct a = null;
Interessantes Timing dieser Frage. Ich habe gerade das Kapitel über Nullable-Typen in Jons Buch (C# in Depth) gelesen. Jeder C# Entwickler sollte es lesen !! Danke Jon. – Bryan
Ich möchte nur darauf hinweisen, dass ich nicht für diesen Kommentar bezahlt habe :) –
Ihre Aussage "Beachten Sie, dass dies wirklich eine Sprachfunktion ist" ist etwas verwirrend, da die CLR * (wie Sie später erwähnen) handelt 'Nullable <>' Strukturen speziell in Boxing und Unboxing-Operationen, die IMHO macht eine Laufzeit-Funktion (mit einigen '?' Syntaktischen Zucker, um es abzurunden). – Lucero