Como todo el mundo ha dicho, string
no necesita ?
(que es un acceso directo para Nullable<string>
) porque todos los tipos de referencia (en) class
ya están anulable. Solo se aplica al tipo de valor (struct
s).
Aparte de eso, no debe llamar ToString()
en el valor de la sesión antes de comprobar si se trata de null
(o se puede obtener una NullReferenceException
). Además, no debería tener que verificar el resultado de ToString()
para null
porque nunca debe devolver null
(si está implementado correctamente). ¿Y está seguro de que desea devolver null
si el valor de la sesión es string
(""
) vacío?
Esto es equivalente a lo que quería escribir:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Aunque lo escribiría así (tornó vacía string
si eso es lo que el valor de sesión contiene):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
"porque todos los tipos de referencia (clases) ya pueden contener nulos ". -> No parece ser así. 'public class vector {public static vector func() {return null; }} 'da como resultado un error. – Assimilater
Las interfaces parecen nullable siempre – Assimilater
@Assimilater Acabo de probar su código. Se compiló y funcionó muy bien para mí. 'vector' es una clase, por lo que' func() 'definitivamente puede devolver' null'. – Lucas