2个变量的三元运算

时间:2017-09-06 13:25:18

标签: ternary-operator

我想问一下对于2个变量使用2个三元运算符而不是if / else块的一般意见是什么。

举一个例子让它更清楚,

if / else块:

var foo;
var bar;
if (boolean_expression) {
    foo = value1;
    bar = value2;
} else {
    foo = value3;
    bar = value4;
}

使用2个三元操作:

var foo = (boolean_expression) ? value1 : value3;
var bar= (boolean_expression) ? value2 : value4;

显然if / else块效率更高,因为它只评估boolean_expression一次,而2个三元运算对它进行两次评估。

然而,在我看来,使用三元操作是如此清晰和可读,我最近决定牺牲两者之间的最小效率差异来提高我的代码的可读性。 (如果代码不重要或执行太频繁)

另外,我会对3个变量进行微弱论证。

我对我的代码做了一件可怕的事情,还是有更好的方式我不知道?

我在c#中编码,但我想这个问题对任何具有三元操作的语言都很重要。

1 个答案:

答案 0 :(得分:0)

  

我认为这个问题对任何具有三元语言的语言都很重要   操作

有些语言提供了这个:

(foo, bar) = (boolean_expression) ? (value1, value2) : (value3, value4);