Gibt es einen Unterschied zwischen den Typen? und Nullable & lt; typ & gt ;?
In C# sind die nullable-primitive Typen (d.h. bool?
) nur Aliase für Ihre entsprechende Nullable<T>
geben oder gibt es einen Unterschied zwischen den beiden?
InformationsquelleAutor der Frage MojoFilter | 2008-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn man sich die IL mit Ildasmwerden Sie feststellen, dass Sie beide kompilieren nach unten zu
Nullable<bool>
.InformationsquelleAutor der Antwort Steve Morgan
Gibt es keinen Unterschied zwischen
bool? b = null
undNullable<bool> b = null
. Die?
ist nur C# - compiler syntax-Zucker.InformationsquelleAutor der Antwort samjudson
Zugriff auf den Wert des bool? Sie müssen Folgendes tun:
Hinweis: Sie können nicht einfach tun:
InformationsquelleAutor der Antwort Mark Ingram
Ich bin überrascht, niemand ging zu der Quelle (C# spec) noch. Aus §4.1.10 Nullable-Typen:
So, Nein, es gibt keinen Unterschied zwischen den beiden Formen. (Vorausgesetzt, Sie haben keine andere Art genannt
Nullable<T>
in jedem der namespaces, die Sie verwenden.)InformationsquelleAutor der Antwort svick
Einen
Nullable<T>
ist eine Struktur, bestehend aus einem T und ein bit-flag, das anzeigt, ob oder ob nicht die T gültig ist. EinNullable<bool>
hat drei mögliche Werte: true, false und null.Edit: Ah, ich verpasste die Tatsache, dass das Fragezeichen nach "bool" war eigentlich ein Teil der Typ-name und nicht ein Indikator, dass Sie eine Frage stellen :). Die Antwort auf deine Frage ist "ja, die C#
bool?
ist nur ein alias fürNullable<bool>
".InformationsquelleAutor der Antwort Curt Hagenlocher
Einen
bool
einen Wert geben, deshalb kann es nicht einen NULL-Wert enthalten. Wenn Sie wickeln einen beliebigen Wert geben Sie mitNullable<>
ist, wird es diese Fähigkeit. Darüber hinaus, Zugriff auf Methoden, um den Wert ändern, indem Sie zusätzliche EigenschaftenHasValue
undValue
.Aber zu der Frage:
Nullable<bool>
undbool?
sind Aliase.InformationsquelleAutor der Antwort spoulson
Nein, es gibt keinen Unterschied. Zusammenfassend:
System.Boolean -> gültige Werte : true, false
bool -> alias für System.Boolean
Nullable<bool> -> gültige Werte : true, false, null
bool? -> alias für Nullable<bool>
Hoffe, das hilft.
InformationsquelleAutor der Antwort morechilli
Null-primitive sind ganz normale primitive verpackt in null-Werte zu. Alle Erscheinungen, die das Gegenteil sind, nur den compiler auf syntaktische Zucker.
InformationsquelleAutor der Antwort Will
Keinen Unterschied. Werfen Sie einen Blick hier: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx
"Die syntax T? ist die Kurzform für null-Werte zulässt, wobei T ein Wert-Typ. Die beiden Formen sind austauschbar."
InformationsquelleAutor der Antwort AMC