Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查查询字符串参数值(如果不为null)的最优雅方法?_C#_Asp.net_If Statement_Query String - Fatal编程技术网

C# 检查查询字符串参数值(如果不为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.

上述情况似乎很棘手。是否有一种更优雅/简洁的方法来检查查询字符串参数是否为null,如果是,则检索它的值?

您可以使用
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");