C# 检查查询字符串参数值(如果不为null)的最优雅方法?
上述情况似乎很棘手。是否有一种更优雅/简洁的方法来检查查询字符串参数是否为null,如果是,则检索它的值?您可以使用C# 检查查询字符串参数值(如果不为null)的最优雅方法?,c#,asp.net,if-statement,query-string,C#,Asp.net,If Statement,Query String,上述情况似乎很棘手。是否有一种更优雅/简洁的方法来检查查询字符串参数是否为null,如果是,则检索它的值?您可以使用string.IsNullOrEmpty if(Page.Request.QueryString["ParamName"] != null) if(Page.Request.QueryString["ParamName"] == expectedResult) //Do something spectacular 或 我首先想到了奉献 var parm = Page.
string.IsNullOrEmpty
if(Page.Request.QueryString["ParamName"] != null)
if(Page.Request.QueryString["ParamName"] == expectedResult)
//Do something spectacular
或
我首先想到了奉献
var parm = Page.Request.QueryString["ParamName"] ?? "";
if(parm == expectedResult)
{
}
但很快就意识到,对于字符串,将某些字符串与null进行比较是很好的,并且会产生false,因此实际上仅使用此项就可以了:
if ((Page.Request.QueryString["ParamName"] ?? "") == expectedResult) {
我个人会使用一组简单的扩展方法,比如:
if(Page.Request.QueryString["ParamName"] == expectedResult)
//Do something spectacular
和一个示例用法
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);
}
}
ParamName的值是多少?您只处理了我的代码的第一行(实际上,我应该真正使用IsNullOrEmpty-so+1)。编写的代码最好能够完全、快速、轻松地理解其他可能继续您的代码的开发人员第一眼看到的内容。此外,如果您看到有多少代码是由您编写的行生成的,那么您就会意识到您编写的代码很慢。一个简单的
==
完成了工作。很高兴接受批评,但你能解释一下代码是如何被认为是“慢”的吗?因为我也接受批评,我收回慢代码,我检查它,编译创建我看到的,而不是我一开始认为的额外转换。(我的意思是,当只需要==
时,会有很多额外的检查,但这就是我们看到的)我必须告诉你,这需要更多的代码,因为“==”在这个案例中不起作用…->site.com?ParamName=One&ParamName=Dyo&ParamName=OneMore
注意,我多次放置ParamName这绝对是一个好的、可重用的建议。
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");