简化代码

时间:2011-08-16 09:54:51

标签: asp.net

我很困惑:有没有办法简化代码?

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;
 }

4 个答案:

答案 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)

此代码可读。进一步简化,即使用?:||&&,会导致无法读取的代码。因此它很简单就足够了。