|
|
1
13
作为一个自学成才的程序员,我只能给你我的意见,没有任何特别的权威支持。 我发现三元条件运算符(?:)对于没有副作用的表达式是完全可以接受的。一旦你开始用它来表示做某事与做其他事情的决定,你(在我看来)就是在滥用它。 简而言之,控件构造用于构造代码流,运算符用于表达式。只要保持这种方式,代码就保持可读性。 |
|
|
2
2
条件运算符(有时称为三元运算符,但这在技术上并不正确,请参见Marc的评论)并不是真正的“替代控制结构”,有几个重要区别:
一般来说,如果您正在评估替代表达式的副作用(即做功而不是返回值),那么使用条件运算符可能比使用if-else结构更容易让维护人员感到困惑。 如果以下所有条件均为真,请使用条件表达式:
您给出的示例很好地使用了三元条件。
|
|
|
3
1
这被称为三元表达式。如果使用三元运算符可以清楚、简洁地表达意图,那么我就这样做了。我通常用复合表达式(多于1个加上&&或| |)来表示 好:
坏的:
|
|
|
4
1
the ternary conditional operator 它在语义上等同于if/else子句,并且执行相同的操作。
过度使用theese结构的主要反对意见是,它可能会创建一些混乱的源代码,这些代码可能不像使用if/else方法那样可读。对于那些不了解特定语法的人来说尤其如此。它是
|
|
5
0
大多数开发人员应该非常熟悉条件运算符。实际上,我会简单地使用:
这个“const==variable”是为了避免“=”vs“==”的问题,但由于C#不将数字视为布尔值,因此这是一个非常罕见的问题,更常见的是(在C#中)更清楚地看到:
因为如果你错过了额外的=它通常不会编译。 |
|
|
6
0
对我来说,这个问题是多程序员环境中的可读性和可维护性问题。
除非保持简单,否则使用三元运算符的代码很容易变得模糊和不可读。
|
|
|
7
0
除了在最基本的场景中使用,我会说避免它。如果两个构造被编译成相同的MSIL,为什么要使用难以理解的一个呢? |
|
|
8
0
此外,由于第三运算符本质上是 statement 伪装成一个表达式,你可以这样做:
这是一个非常有用的功能,我一直在使用它。正如其他人所提到的那样,要谨慎,不要编写有副作用的表达式,或者编写会降低可读性的过于复杂的表达式。 请看在上帝的份上,不要写这样的代码(我见过很多次):
相反,您应该这样做:
|