Warum kann ich erklären, eine generische Liste als null?
Ich versuche, den folgenden code verwenden:
private Nullable<List<IpAddressRange>> ipAddressRangeToBind;
Aber ich bin immer folgende Warnung:
Den Typ der Liste muss ein null-Wert geben
um es zu verwenden als parameter " T " in der generischen Typ oder Methode
'System.Nullable'.
InformationsquelleAutor der Frage Exitos | 2011-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
List<T>
ist bereits ein Referenz-Typ (für jede Art vonT
) - Sie können nur erklärenNullable<T>
woT
ist ein null-Wert geben (es ist erklärt, wieNullable<T> where T : struct
).Aber das ist okay, denn wenn Sie nur erklären:
dann können Sie immer noch
da Referenz-Typen sind immer null-Werte zu.
InformationsquelleAutor der Antwort Jon Skeet
List<IpAddressRange>
ist ein Referenz - Typ-es ist schon null-Werte zulässt - in der Tat, es wird auf null initialisiert, diese Erklärung.InformationsquelleAutor der Antwort Cade Roux
Können Sie es einfach verwenden, wie es ist:
Liste ist schon null-Werte zu.
InformationsquelleAutor der Antwort Roee Gavirel
Referenz-Typen können nicht eingewickelt werden, in
Nullable<T>
aufgrund einerwhere T : struct
Einschränkung auf den generischen.Die Gründe für diese Einschränkung sind:
Nullable<T>
hat eine bool-EigenschaftHasValue
und eine ArtT
EigenschaftValue
enthält, die den tatsächlichen Wert-Typ Wert.Selbst wenn
HasValue == false
(das heißt, wenn die null-Werte zulässt gewickelt variablenull
), die Sie NOCH verbrauchen Speicherplatz für den Wert geben, als ob es dort war.Es ist logisch null-Werte zulässt, können Sie angeben optional Verhalten, aber es hat nicht speichern jeden Raum. Dies ist sehr ähnlich wie boost::optional funktioniert in C++.
InformationsquelleAutor der Antwort James Michael Hare