请原谅看似简单的问题,但由于某种原因,我现在想不出一个优雅的解决方案。
我有以下情况:
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;
}
但请告诉我,如果我错了!如果你有一个不同的解决方案来改变逻辑,那么我非常乐意拥有不同的观点!谢谢!
答案 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);