c#两个嵌套if语句,另一个

时间:2014-01-31 16:15:40

标签: c# if-statement

请原谅看似简单的问题,但由于某种原因,我现在想不出一个优雅的解决方案。

我有以下情况:

    if (Request.QueryString["name"] != null)
    {
        if (Request.QueryString["name"].ToString() != "")
        {
            nameSpan.InnerHtml = Request.QueryString["name"].ToString();
        }

    }

问题是,如果我想隐藏nameSpan,如果querystring [“name”]为null或emtpy。丑陋的解决方案是:

if (Request.QueryString["name"] != null)
{
    if (Request.QueryString["name"].ToString() != "")
    {
        nameSpan.InnerHtml = Request.QueryString["name"].ToString();
    }
    else
    {
        nameSpan.Visible = false;
    }
}
else
{
    nameSpan.Visible = false;
}

我希望有nameSpan.Visible = false;部分可以合并到一个区域的情况,所以我只需要写一次

据我所知,不可能做到以下几点:

if (Request.QueryString["name"] != null && Request.QueryString["name"].ToString() != "")
{
    nameSpan.InnerHtml = Request.QueryString["name"].ToString();
}
else
{
    nameSpan.Visible = false;
}

但请告诉我,如果我错了!如果你有一个不同的解决方案来改变逻辑,那么我非常乐意拥有不同的观点!谢谢!

2 个答案:

答案 0 :(得分:9)

您的&&解决方案应该没问题。如果&&的左侧为假,则右侧未评估,因此不会有例外。

如果需要,可以使用String.IsNullOrEmpty静态方法:

if (!string.IsNullOrEmpty(Request.QueryString["name"]))
{
    nameSpan.InnerHtml = Request.QueryString["name"].ToString();
}
else
{
    nameSpan.Visible = false;
}

答案 1 :(得分:0)

如果您使用紧凑代码,我将使用next(如果key不存在,则NameValueCollection返回null,并且indexer返回string):

nameSpan.InnerHtml = Request.QueryString["name"];
nameSpan.Visible = !string.IsNullOrEmpty(nameSpan.InnerHtml);