我很困惑:有没有办法简化代码?
private void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(pnlMain.Title) && string.IsNullOrWhiteSpace(Title))
pnlMain.Title = DefaultTitle;
else if (string.IsNullOrWhiteSpace(Title))
pnlMain.Title = DefaultTitle;
else
pnlMain.Title = Title;
}
答案 0 :(得分:2)
如果你为它绘制一个逻辑表,你应该可以解决这个问题...... pnlMain.Title
为true或false的列为null或空格,Title
的行为null或当您完成上述逻辑时,空格然后在每个单元格中标记您是使用DefaultTitle
还是Title
。
你应该得到的结果是pnlMain.Title是什么并不重要。
所以代码与:
相同 if (string.IsNullOrWhiteSpace(Title))
pnlMain.Title = DefaultTitle;
else
pnlMain.Title = Title;
当你知道答案时,你可能会看到它,因为在你的代码中你的前两个检查是相同的,除了有和没有pnlMain.Title被检查和相同的结果。
通过查看您可能尝试做的事情,您实际上可能想要这样做:
if (string.IsNullOrWhiteSpace(pnlMain.Title))
{
if (string.IsNullOrWhiteSpace(Title))
pnlMain.Title = DefaultTitle;
else
pnlMain.Title = Title;
}
上面的代码只会更改pnlMain.Title(如果它为null或空格),如果不是null或空格,则使用Title,否则将返回DefaultTitle。这似乎更像是我希望你想做的......
答案 1 :(得分:1)
看起来你可以使用三元运算符。
pnlMain.Title = (!string.IsNullOrWhiteSpace(Title))?Title:DefaultTitle;
您无需检查string.IsNullOrWhiteSpace(pnlMain.Title)
,因为您无论如何都要覆盖它。但也许这是你的代码中的另一个错误。那么,那段代码意味着什么呢?
答案 2 :(得分:1)
您的else if (string.IsNullOrWhiteSpace(Title))
将始终为真,并且永远不会达到最后else
。你可能意味着这样的事情:
if (string.IsNullOrWhiteSpace(pnlMain.Title))
pnlMain.Title = string.IsNullOrWhiteSpace(Title) ? DefaultTitle : Title;
答案 3 :(得分:0)
此代码可读。进一步简化,即使用?:
,||
,&&
,会导致无法读取的代码。因此它很简单就足够了。