如果不为空,检查查询字符串参数值的最优雅方法是啥?

Posted

技术标签:

【中文标题】如果不为空,检查查询字符串参数值的最优雅方法是啥?【英文标题】:Most elegant way of checking the value of a query string parameter if not null?如果不为空,检查查询字符串参数值的最优雅方法是什么? 【发布时间】:2012-06-29 10:51:56 【问题描述】:
if(Page.Request.QueryString["ParamName"] != null)
  if(Page.Request.QueryString["ParamName"] == expectedResult)
    //Do something spectacular

上面的内容看起来很笨拙。是否有更优雅/紧凑的方法来检查查询字符串参数是否不为空,如果是 - 检索它的值?

【问题讨论】:

***.com/questions/349742/… 【参考方案1】:

我首先想到了提供

if ((Page.Request.QueryString["ParamName"] ?? "") == expectedResult) 

但很快意识到,对于字符串,将某些字符串与 null 进行比较是可以的,并且会产生 false,所以真的只使用它就可以了:

if(Page.Request.QueryString["ParamName"] == expectedResult)
    //Do something spectacular

【讨论】:

【参考方案2】:

您可以使用String.IsNullOrEmpty

String.IsNullOrEmpty(Page.Request.QueryString["ParamName"]);

或者

var parm = Page.Request.QueryString["ParamName"] ?? "";
if(parm == expectedResult)



【讨论】:

ParamName 的值呢?您只处理了我的代码的第一行(尽管如此,我确实应该使用 IsNullOrEmpty - 所以 +1)。【参考方案3】:

我个人会使用一组简单的扩展方法,如下所示:

public static class RequestExtensions

    public static string QueryStringValue(this HttpRequest request, string parameter)
    
        return !string.IsNullOrEmpty(request.QueryString[parameter]) ? request.QueryString[parameter] : string.Empty;
    

    public static bool QueryStringValueMatchesExpected(this HttpRequest request, string parameter, string expected)
    
        return !string.IsNullOrEmpty(request.QueryString[parameter]) && request.QueryString[parameter].Equals(expected, StringComparison.OrdinalIgnoreCase);
    

和一个示例用法

string value = Page.Request.QueryStringValue("SomeParam");
bool match = Page.Request.QueryStringValueMatchesExpected("SomeParam", "somevaue");

【讨论】:

最好编写可以完全、快速和容易理解的代码,其他开发人员可能会来继续你的代码。此外,如果您通过编写的行看到有多少代码是产品,您就会意识到您编写的代码很慢。一个简单的== 就完成了。 乐于接受批评,但您能解释一下代码是如何被认为“慢”的吗? 因为我也接受批评,所以我收回了慢代码,我检查它并编译创建我所看到的,而不是我最初认为的额外转换。 (我的意思是有很多额外的检查,当只需要== 但它是我们所看到的) 我必须告诉你需要更多代码,因为 '==' 在这种情况下不起作用...-> site.com?ParamName=One&ParamName=Dyo&ParamName=OneMore 请注意,我已经多次放置 ParamName 这绝对是一个不错且可重复使用的提案。

以上是关于如果不为空,检查查询字符串参数值的最优雅方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

检查PHP数组是不是不为空的最简单方法[关闭]

检查“不为空”或空字符串的 PHP 语法是啥? [复制]

如何检查字符串是不是为空?

在javascript中设置默认参数值的最有效方法是啥?

如何使用连接表检查房间查询中的空参数?

检查输入字段中的空值的正确方法是啥[重复]