Ich habe eine Liste:C# struct, wie wird ein Nullwert zugewiesen?
List<int, SomeStruct>
Aus irgendeinem Grund ist es nicht erlaubt mir Nullwerte, um es zuzuweisen. Was mache ich, wenn ich keine Struktur haben möchte?
Ich habe eine Liste:C# struct, wie wird ein Nullwert zugewiesen?
List<int, SomeStruct>
Aus irgendeinem Grund ist es nicht erlaubt mir Nullwerte, um es zuzuweisen. Was mache ich, wenn ich keine Struktur haben möchte?
Verwendung nullable types:
List<int, SomeStruct?>
Sie können nicht null
auf ein Element der Liste zuweisen, da structs Werttypen sind, während null
einen leeren Zeiger bedeutet, und so kann nur zugewiesen werden Typ Variablen verweisen.
Beachten Sie auch, dass List
, wie Sie es verwenden, nicht in .NET vorhanden ist! Vielleicht möchten Sie Dictionary
?
In C# ist eine Struktur ein 'Werttyp', der nicht null sein kann.
Wenn Sie wirklich, wirklich in der Lage sein müssen, dies auf Null zu setzen, dann machen Sie es zu einem "Nullable" -Typ, indem Sie ein abschließendes Fragezeichen hinzufügen.
Sie sollten wahrscheinlich zuerst in die Details dieser mehr zuerst schauen - es ist ziemlich wahrscheinlich, dass Sie wirklich eine 'Struktur' überhaupt nicht wollen, aber würde mit einer 'Klasse' besser sein.
Einverstanden. Das Problem ist, dass ich das Struct nicht besitze, ich benutze es einfach :( –
Sofern Sie keine benutzerdefinierte generische Auflistung definiert haben, existiert List<T, U>
nicht im Namespace System.Collections.Generic
. Meinst du eher Dictionary<TKey, TValue>
?
Sie können Nullable-Typen verwenden: Using Nullable Types (C# Programming Guide)
.
Wie bei jedem ValueType müssen Sie explizit angeben, dass Sie Nullwerte für Ihren Typ zulassen. Sie können dies tun, indem Sie das Zeichen "?
" mit Ihrem Typnamen verketten oder indem Sie es als Nullable markieren, wobei T der Name Ihrer Struktur ist.
Ich konnte nicht widerstehen zu antworten, als ich sah, dass es drei 'Will' geben würde, die eine Frage beantworteten! = P –
Wo drei Wills sind sind drei Wege? – RenniePet
Wenn ich dies tun, gibt mir die Verweise auf die Strukturen Mitglied jetzt den Fehler: System.Nullable <> enthält keine Definition für "Mitglied" –
@wydyna: Lesen Sie auf NULL-Typen. Im Wesentlichen 'SomeStruct?' Ist syntaktischer Zucker für 'Nullable'. Sie können nicht direkt auf Mitglieder zugreifen, aber das ist der Preis, den Sie für die Verwendung der Semantik null mit einem Werttyp bezahlen. –
Danke für Ihre Hilfe :) –