与标准的if-else语句相比,?:运算符有什么好处和缺点.显而易见的是:
有条件的?:运营商
标准If/Else
根据声明,可读性似乎各不相同.在第一次接触到?:运算符后的一段时间内,我花了一些时间来精确地消化它是如何工作的.您是否会建议尽可能使用它,或者坚持if/else,因为我与许多非程序员一起工作?
我正在查看一些带有巨大的switch语句和每个case的if-else语句的代码,并立即感受到优化的冲动.作为一个优秀的开发人员,我总是应该着手获得一些硬性时序事实,并从三个变体开始:
原始代码如下所示:
public static bool SwitchIfElse(Key inKey, out char key, bool shift)
{
switch (inKey)
{
case Key.A: if (shift) { key = 'A'; } else { key = 'a'; } return true;
case Key.B: if (shift) { key = 'B'; } else { key = 'b'; } return true;
case Key.C: if (shift) { key = 'C'; } else { key = 'c'; } return true;
...
case Key.Y: if (shift) { key = 'Y'; } else { key …Run Code Online (Sandbox Code Playgroud)c# performance if-statement conditional-operator micro-optimization
如果您首先讨厌三元条件运算符,则无需回复;)
我经常看到这与分配表达式一起使用,如:
var foo = (some_condition) ? then_code : else_code;
Run Code Online (Sandbox Code Playgroud)
但是,我想用它来代替简单的代码,例如:
if(some_condition) {
do_something_simple;
} else {
do_something_else;
}
Run Code Online (Sandbox Code Playgroud)
而是做:
(some_condition) ? do_something_simple : do_something_else;
Run Code Online (Sandbox Code Playgroud)
我可能会在JavaScript中这样做.在上面它返回undefined,因此它不需要赋值.我喜欢节省的空间但是想知道人们对这种用途的看法,同样,我通常只看到三元用于作业.
编辑:我看到答案暗指"隐藏意图".虽然在表达式中经常使用,但是如何在表达式中隐藏意图呢?特别是在动态语言中,人们可能会看到遍布各地的三元运算符?
有很多陈述我们可以使用条件运算符或if..中的任何一个else.
那么在那些陈述中,哪一个从绩效的角度来看是最好的呢?