Comme tout le monde a dit, string
n'a pas besoin ?
(ce qui est un raccourci pour Nullable<string>
) car tous les types de référence (class
de es) sont déjà annulable. Elle s'applique uniquement au type de valeur (struct
s). En dehors de cela, vous ne devez pas appeler ToString()
sur la valeur de session avant de vérifier si c'est null
(ou vous pouvez obtenir un NullReferenceException
). En outre, vous ne devriez pas avoir à vérifier le résultat de ToString()
pour null
car il ne devrait jamais retourner null
(s'il est correctement implémenté). Et êtes-vous sûr de vouloir retourner null
si la valeur de la session est vide string
(""
)?
Cela équivaut à ce que vous vouliez écrire:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Bien que je voudrais écrire comme ça (retour à vide string
si c'est ce que la valeur de session contient):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
« parce que tous les types de référence (classes) sont déjà nullables. " -> Ne semble pas être ainsi. 'public class vector {public static vecteur func() {return null; }} 'entraîne une erreur. – Assimilater
Les interfaces semblent être toujours nulles – Assimilater
@Assimilater J'ai juste essayé votre code. Il a compilé et s'est très bien passé pour moi. 'vector' est une classe, donc' func() 'peut certainement retourner' null'. – Lucas