、string
は、すべての参照型(class
ES)がすでにNULL可能であるため、(Nullable<string>
のショートカットである)?
を必要としません。値タイプ(struct
)にのみ適用されます。
null
(または、NullReferenceException
を得ることができます)であるかどうかを確認する前に、セッション値にToString()
を呼び出すべきではありません。また、null
(正確に実装されている場合)を返すべきでないので、null
の結果をToString()
で確認する必要はありません。そして、セッション値が空の場合null
を返すことを確かめてくださいstring
(""
)?
これは、あなたが書くことが何を意味するのかと同等です:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
私はこれ(つまり、セッション値が含まれているものだ場合は、空string
を返す)のようにそれを記述しますが:すべてのために「
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
参照型(クラス)はすでにnull可能です。 " - >そうではないようです。 'public class vector {public static vector func(){nullを返します。 }} 'がエラーになります。 – Assimilater
インターフェイスは常にNULL可能であるようです。 – Assimilater
@Assimilater私はあなたのコードを試しました。コンパイルして、うまく走った。 'vector'はクラスなので、' func() 'は間違いなく' null'を返すことができます。 – Lucas