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

Jam*_*mes 1 c# if-statement

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

我有以下情况:

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

    }
Run Code Online (Sandbox Code Playgroud)

问题是,如果我想隐藏nameSpanif 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mar*_*zek 9

你的&&解决方案应该没问题.如果左侧&&是假的,则右侧没有评估,因此不会有异常.

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

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