Jak wszyscy inni mówili, string
nie potrzebuje ?
(co jest skrótem dla Nullable<string>
), ponieważ wszystkie typy referencyjne (class
es) są już pustych. Dotyczy tylko typu wartości (struct
s).
Oprócz tego nie powinieneś dzwonić pod numer ToString()
, zanim sprawdzisz, czy jest to null
(lub możesz uzyskać NullReferenceException
). Ponadto nie powinieneś sprawdzać wyniku ToString()
dla null
, ponieważ nie powinien on nigdy wrócić null
(jeśli poprawnie zaimplementowany). I czy na pewno chcesz zwrócić null
, jeśli wartość sesji jest pusta string
(""
)?
Jest to równoznaczne z tym, co oznaczało napisać:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Chociaż chciałbym napisać to tak (powrót pusty string
jeśli to wartość sesja zawiera):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
„, ponieważ wszystko typy odniesienia (klasy) są już zerowe. " -> Nie wydaje się tak. 'publiczny wektor klasy {public static vector func() {return null; }} 'powoduje błąd. – Assimilater
Interfejsy wydają się być zerowe zawsze – Assimilater
@Assimilater Właśnie wypróbowałem twój kod. Kompilował i działał dla mnie dobrze. 'vector' jest klasą, więc' func() 'może zdecydowanie zwrócić' null'. – Lucas