2010-11-10 13 views

Antwort

36

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?

+0

Wenn ich dies tun, gibt mir die Verweise auf die Strukturen Mitglied jetzt den Fehler: System.Nullable <> enthält keine Definition für "Mitglied" –

+1

@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. –

+0

Danke für Ihre Hilfe :) –

10

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.

+3

Einverstanden. Das Problem ist, dass ich das Struct nicht besitze, ich benutze es einfach :( –

3

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.

+1

Ich konnte nicht widerstehen zu antworten, als ich sah, dass es drei 'Will' geben würde, die eine Frage beantworteten! = P –

+5

Wo drei Wills sind sind drei Wege? – RenniePet