如果页面查询字符串中未指定 mode
,此代码将抛出 NullReferenceException
:
bool isAdvancedMode = Request.QueryString["mode"].Equals("advanced");
这就是我解决这个问题的方法:
bool isAdvancedMode = (Request.QueryString["mode"] + "").Equals("advanced");
这是标准做法还是 hack?
最佳答案
您可以使用 null-coalescing operator :
bool isAdvancedMode = (Request.QueryString["mode"] ?? String.Empty).Equals("advanced");
编辑:如果你想重新使用这个逻辑,试试这个扩展方法:
public static bool EqualIfExists(this string source, string comparison)
{
return source != null && source.Equals(comparison);
}
Request.QueryString["mode"].EqualIfExists("advanced")
添加更多覆盖以匹配 Equals
签名。我不确定这是否是个好名字(我认为不是)。
关于c# - 在 Request.QueryString 中避免 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726781/