So I have something like this
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();
}
which doesn't compile.
How do I return a nullable string type?
String is already a nullable type. Nullable can only be used on ValueTypes. String is a reference type.
Just get rid of the "?" and you should be good to go!
As everyone else has said, string
doesn't need ?
(which is a shortcut for Nullable<string>
) because all reference types ( class
es) are already nullable. It only applies to value type ( struct
s).
Apart from that, you should not call ToString()
on the session value before you check if it is null
(or you can get a NullReferenceException
). Also, you shouldn't have to check the result of ToString()
for null
because it should never return null
(if correctly implemented). And are you sure you want to return null
if the session value is an empty string
( ""
)?
This is equivalent to what you meant to write:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Although I would write it like this (return empty string
if that's what the session value contains):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
您可以为字符串赋值null,因为它是引用类型,您不需要能够使其为空。
String is already a nullable type. You don't need the '?'.
Error 18 The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'
string
本身已经可以为空了。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.