在Request.QueryString中避免NullReferenceException

Tom*_*len 4 c# asp.net nullreferenceexception query-string

此代码抛出页面查询字符串中未指定的NullReferenceExceptionif mode:

bool isAdvancedMode = Request.QueryString["mode"].Equals("advanced");
Run Code Online (Sandbox Code Playgroud)

这是我解决这个问题的方法:

bool isAdvancedMode = (Request.QueryString["mode"] + "").Equals("advanced");
Run Code Online (Sandbox Code Playgroud)

这是标准做法还是黑客攻击?

Sim*_*ger 7

您可以使用null-coalescing运算符:

bool isAdvancedMode = (Request.QueryString["mode"] ?? String.Empty).Equals("advanced");
Run Code Online (Sandbox Code Playgroud)

编辑:如果要重新使用此逻辑,请尝试以下扩展方法:

public static bool EqualIfExists(this string source, string comparison)
{
    return source != null && source.Equals(comparison);
}

Request.QueryString["mode"].EqualIfExists("advanced")
Run Code Online (Sandbox Code Playgroud)

添加更多覆盖以匹配Equals签名.我不确定这是不是一个好名字(我认为不是).