private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
W dalszej części kodu używam go w ten sposób:
typeOfContract = Request.QueryString["type"];
Otrzymuję następujący błąd w deklaracji typeOfContract
linii stwierdzającej:
Typ „string” musi być typem wartości niepodlegającym wartości null, aby można go było użyć jako parametru „T” w typie ogólnym lub metodzie „System.Nullable <T>”
Jakieś pomysły? Zasadniczo chcę się upewnić, że "type"
istnieje w QueryString
przed wykonaniem akcji.
string?
aby powiedzieć światu, że ten ciąg może być pusty. Ref: youtube.com/watch?v=VdC0aoa7ungKomplikujesz to.
string
jest już dopuszczalna wartość null. Nie musisz zwiększać wartości null. Wyjmij?
typ nieruchomości.źródło
ciąg nie może być parametrem dopuszczającym wartość Nullable, ponieważ ciąg nie jest typem wartości. Ciąg jest typem referencyjnym.
jest bardzo poprawną instrukcją i nie ma potrzeby nadawania jej wartości null.
powinno działać ze względu na słowo kluczowe as .
źródło
Ciąg jest typem referencyjnym, więc nie musisz (i nie możesz) go
Nullable<T>
tutaj używać . Po prostu zadeklaruj typeOfContract jako ciąg i po prostu sprawdź wartość null po pobraniu go z ciągu zapytania. Lub użyj String.IsNullOrEmpty, jeśli chcesz obsługiwać puste wartości ciągów tak samo, jak null.źródło
Aby uzyskać wartość null, użyj
?
ze wszystkimi prymitywami C # , z wyjątkiem string.Poniższa strona zawiera listę prymitywów języka C # : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx
źródło
Zwróć uwagę, że w nadchodzącej wersji C # 8, odpowiedzi nie są prawdziwe.
All the reference types are non-nullable by default
i faktycznie możesz wykonać następujące czynności:Jednak,
Ważne jest tutaj pokazanie intencji twojego kodu. Jeśli „intencją” jest to, że typ referencyjny może mieć wartość null, zaznacz go, aby w przeciwnym razie przypisanie wartości null do wartości nie dopuszczającej wartości null spowodowałoby ostrzeżenie kompilatora.
Więcej informacji
Moderatorowi, który usuwa wszystkie odpowiedzi, nie rób tego. Jestem głęboko przekonany, że ta odpowiedź jest wartościowa, a jej usunięcie po prostu uniemożliwiłoby komuś poznanie tego, co jest w danym momencie właściwe. Ponieważ wszystkie odpowiedzi zostały usunięte, ponownie zamieszczam odpowiedź tutaj. Link, który został wysłany w sprawie „duplikatów”, jest po prostu otwarciem niektórych osób i nie sądzę, by było to oficjalna rekomendacja.
źródło