Mam listę:C# struct, jak przypisać wartość zerową?
List<int, SomeStruct>
z jakiegoś powodu, nie pozwalając mi przypisać wartości null do niego. Co mam zrobić, jeśli nie chcę powiązać struktury?
Mam listę:C# struct, jak przypisać wartość zerową?
List<int, SomeStruct>
z jakiegoś powodu, nie pozwalając mi przypisać wartości null do niego. Co mam zrobić, jeśli nie chcę powiązać struktury?
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
?
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ą".
Zgoda. Problem polega na tym, że nie jestem właścicielem Struct, po prostu go używam :( –
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.
Nie mogłem oprzeć się odpowiedzi, gdy zobaczyłem, że będzie trzy "Wola" odpowiadająca na jedno pytanie! = P –
Tam, gdzie są trzy Testamenty są trzy sposoby? – RenniePet
Kiedy to zrobię, wszelkie odniesienia do członka struktury dają mi teraz błąd: System.Nullable <> nie zawiera definicji dla "Członka" –
@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. –
Dzięki za pomoc :) –