Renvoi de types de chaînes nullables
J'ai donc quelque chose comme ceci
public string? SessionValue(string key)
{
if (HttpContext.Current.Session[key].ToString() == null || HttpContext.Current.Session[key].ToString() == "")
return null;
return HttpContext.Current.Session[key].ToString();
}
qui ne compile pas.
Comment puis-je retourner un nullable type de chaîne?
source d'informationauteur sarsnake
Vous devez vous connecter pour publier un commentaire.
Chaîne est déjà un type nullable. Prendre la valeur null peut être utilisé uniquement sur les ValueTypes. String est un type de référence.
Juste se débarrasser de "?" et vous devriez être bon d'aller!
Que tout le monde l'a dit,
string
n'a pas besoin de?
(qui est un raccourci pourNullable<string>
), car tous les types de référence (class
es) sont déjà nullable. Il s'applique uniquement au type de la valeur (struct
s).En dehors de cela, vous ne devez pas appeler
ToString()
sur la valeur de session avant de vérifier s'il estnull
(ou vous pouvez obtenir unNullReferenceException
). Aussi, vous ne devriez pas avoir à vérifier le résultat deToString()
pournull
car il ne faut jamais revenirnull
(si elles sont correctement mises en œuvre). Et êtes-vous sûr que vous voulez retournernull
si la valeur de session est videstring
(""
)?C'est l'équivalent de ce que vous vouliez écrire:
Bien que je voudrais écrire comme ceci (retour à vide
string
si c'est ce que la valeur de session contient):Vous pouvez affecter la valeur null à une chaîne depuis sa un type de référence, vous n'avez pas besoin d'être en mesure de le faire nullable.
Chaîne est déjà un type nullable. Vous n'avez pas besoin de '?'.
string
est déjà nullable sur son propre.