Come è già stato detto, string
non ha bisogno ?
(che è una scorciatoia per Nullable<string>
) perché tutti i tipi di riferimento (class
es) sono già annullabile. Si applica solo al tipo di valore (struct
s).
A parte questo, non è necessario chiamare ToString()
sul valore della sessione prima di verificare se è null
(oppure è possibile ottenere un NullReferenceException
). Inoltre, non dovresti controllare il risultato di ToString()
per null
perché non dovrebbe mai restituire null
(se correttamente implementato). E sei sicuro di voler restituire null
se il valore della sessione è vuoto string
(""
)?
Questo è equivalente a quello che si intende scrivere:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Anche se vorrei scrivere in questo modo (tornare vuota string
se è quello che il valore di sessione contiene):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
"perché tutti i tipi di riferimento (classi) sono già annullabili. " -> Non sembra essere così. 'vector public class vector {public static vector func() {return null; }} 'genera un errore. – Assimilater
Le interfacce sembrano essere annullabili sempre – Assimilater
@Assimilater Ho appena provato il tuo codice. Ha compilato e funzionato bene per me. 'vector' è una classe, quindi' func() 'può sicuramente restituire' null'. – Lucas