如果不为空,检查查询字符串参数值的最优雅方法是啥?
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
这绝对是一个不错且可重复使用的提案。以上是关于如果不为空,检查查询字符串参数值的最优雅方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章