C# 如何使代码更简单(if/else)

C# 如何使代码更简单(if/else),c#,C#,如何使此代码更简单 if (PlayersLevel > 1) button4.Visible = true; else button4.Visible = false; if (PlayersLevel > 2) button5.Visible = true; else button5.Visible = false; 好了,好了,够了,我已经知道=)谢谢只需将值设置为比较结果: button4.Visible = Players

如何使此代码更简单

if (PlayersLevel > 1)
    button4.Visible = true;        
else
    button4.Visible = false;

if (PlayersLevel > 2)
    button5.Visible = true;
else
    button5.Visible = false;

好了,好了,够了,我已经知道=)谢谢

只需将值设置为比较结果:

button4.Visible = PlayersLevel > 1;
button5.Visible = PlayersLevel > 2;
button4.Visible = (PlayersLevel > 1);
button5.Visible = (PlayersLevel > 2);

您不需要If语句,您将通过以下操作获得
True
/
False

button4.Visible = PlayersLevel > 1;        
button5.Visible = PlayersLevel > 2;

您可以使用的Bool结果

button4.Visible = PlayersLevel > 1;        
button5.Visible = PlayersLevel > 2;

另一种方法是:

button4.visible = PlayersLevel > 1 ? true : false;
button5.visible = PlayersLevel > 2 ? true : false;

对有意编写的代码进行一点Linq封装不会有什么坏处。插入此扩展方法

public static void VisibleWhen( this Button button , bool visibilityState )
{
  button.Visible = visibilityState ;
}
然后你可以说:

button4.VisibleWhen( PlayersLevel > 1 ) ;
button4.VisibleWhen( PlayersLevel > 2 ) ;

仅供参考,三元是不必要的,但这是一个值得注意的好选择。我更喜欢在这样的情况下使用明确的三元表达式:它使意图非常清楚。@NicholasCarey对,任何不知道布尔表达式是什么的人都能轻松理解三元。@webdad3故意混淆新程序员是一种糟糕的做法。但现在我在喂巨魔,我尽量不这么做。干杯,这是巨魔吗?您担心将布尔值指定给标准布尔属性可能不清楚,因此您希望将其替换为一个没有人听说过的扩展方法,名称中没有动词?我在这里没有看到任何LinQ。他可能认为扩展方法就是LinQ。他们当然与此密切相关。事实上,我似乎记得,它们的加入在很大程度上是为了使LINQ成为可能。
button4.VisibleWhen( PlayersLevel > 1 ) ;
button4.VisibleWhen( PlayersLevel > 2 ) ;