使用条件?:(三元)运算符的好处
与标准的if-else语句相比,?:操作符有哪些优点和缺点? 显而易见的是:
有条件的:操作员
标准如果/否
可读性似乎因每个语句而异。 在第一次接触到?:操作符之后的一段时间,我花了一些时间来消化它的工作原理。 你会推荐尽可能使用它,或者坚持if / else,因为我与许多非程序员一起工作?
我基本上建议只有当结果语句非常短时,才会使用它,并且在不牺牲可读性的前提下,简洁性大大超过if / else等效语句。
好例子:
int result = Check() ? 1 : 0;
不好的例子:
int result = FirstCheck() ? 1 : SecondCheck() ? 1 : ThirdCheck() ? 1 : 0;
这在其他答案中已经涵盖了很多,但“这是一个表达式”并不能真正解释为什么这么有用......
在C ++和C#等语言中,您可以使用它们定义局部常量(在方法体内)。 这对传统的if / then语句来说是不可能的,因为const all的值必须在单个语句中分配:
const int speed = (shiftKeyDown) ? 10 : 1;
不一样:
const int speed;
if (shifKeyDown)
speed = 10; // error - can't assign to a const
else
speed = 1; // error
以类似的方式,您可以在其他代码中嵌入第三级表达式。 除了使源代码更紧凑(因此在某些情况下更易读),它还可以使生成的机器代码更加紧凑和高效:
MoveCar((shiftKeyDown) ? 10 : 1);
...可能会产生更少的代码,而不必调用相同的方法两次:
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
当然,这也是一种更方便简洁的形式(少打字,少重复,并且如果你必须在if / else中重复块代码,可以减少错误的几率)。 在这种干净的“常见模式”情况下:
object thing = (reference == null) ? null : reference.Thing;
...阅读/解析/理解(一旦你习惯了它)比慢慢的if / else等效的速度更快,因此它可以帮助你更快地“加速”代码。
当然,仅仅因为它很有用,并不意味着它在每一种情况下都是最好的。 我建议只使用它用于短代码的意思是清楚的(或更明确)通过使用?:
- 如果你使用它在更复杂的代码,或嵌套三元运算符在彼此之内,它可以使代码非常困难读书。
如果我想要将变量设置为在请求中发送的值(如果已定义),或者将某个变量设置为默认值(如果未定义),那么我发现它在Web开发中特别有用。
链接地址: http://www.djcxy.com/p/53859.html上一篇: Benefits of using the conditional ?: (ternary) operator
下一篇: What does the question mark in member access mean in C#?