2010-11-10 16 views

Odpowiedz

36

Zastosowanie nullable types:

List<int, SomeStruct?> 

Nie można przypisać null do elementu listy, ponieważ struktury są typy wartości, natomiast null oznacza pustego wskaźnika, a więc może być przypisany tylko do odniesienia zmiennych typu.

Należy również pamiętać, że List, jakiego używasz, nie istnieje w .NET! Być może chcesz Dictionary?

+0

Kiedy to zrobię, wszelkie odniesienia do członka struktury dają mi teraz błąd: System.Nullable <> nie zawiera definicji dla "Członka" –

+1

@whydna: Czytaj na temat typów zerowalnych. Zasadniczo 'SomeStruct?' Jest syntaktycznym cukrem dla 'Nullable '. Nie możesz uzyskać dostępu do członków bezpośrednio, ale jest to cena, jaką płacisz za używanie semantyki 'null' z typem wartości. –

+0

Dzięki za pomoc :) –

10

W języku C# a struct jest "typem wartości", który nie może być pusty.

Jeśli naprawdę, naprawdę musisz mieć możliwość anulowania tego, a następnie przekształcić go w typ "zerowy", dodając końcowy znak zapytania.

Najprawdopodobniej powinieneś zajrzeć do szczegółów tego bardziej - ale jest całkiem prawdopodobne, że wcale nie chcesz "struktury", ale byłoby lepiej z "klasą".

+3

Zgoda. Problem polega na tym, że nie jestem właścicielem Struct, po prostu go używam :( –

3

Jeśli nie zdefiniowano niestandardowej kolekcji ogólnej, List<T, U> nie istnieje w przestrzeni nazw . Czy miałeś na myśli raczej Dictionary<TKey, TValue>?

Można używać typów zerowalnych: Using Nullable Types (C# Programming Guide).

Podobnie jak w przypadku każdej wartości ValueType, należy wyraźnie określić, że dozwolone są wartości puste dla danego typu. Możesz to zrobić, łącząc znak "?" z nazwą typu lub oznaczając go jako Nullable, gdzie T jest nazwą twojej struktury.

+1

Nie mogłem oprzeć się odpowiedzi, gdy zobaczyłem, że będzie trzy "Wola" odpowiadająca na jedno pytanie! = P –

+5

Tam, gdzie są trzy Testamenty są trzy sposoby? – RenniePet

Powiązane problemy