我正在使用条件运算符来代替if else
,但是在我的情况下,我有多个语句如下:
if (condition)
{
statement 1;
statement 2;
}
else
{
statement 3;
statement 4;
}
我该如何使用条件运算符
?和:
来编写相同的代码?我正在使用条件运算符来代替if else
,但是在我的情况下,我有多个语句如下:
if (condition)
{
statement 1;
statement 2;
}
else
{
statement 3;
statement 4;
}
?和:
来编写相同的代码?三元运算符是用于计算替代表达式的,而不是调用替代语句。
如果你有两组逻辑上具有相同结果类型的语句,你可以重构代码将它们分别放在单独的方法中:
var result = condition ? Method1() : Method2();
但如果它们逻辑上更多与副作用相关而不是评估结果,我会使用一个if
块。
只有当它们公开了流畅的API并具有返回值(即允许您将多个步骤压缩到单个表达式中的内容)时,才能这样做。例如:
sb = (someCondition) ? sb.Append("foo").Append("bar")
: sb.Apppend("cde").Append("fgh");
否则呢?不行;每个情况只能评估一个表达式。当然,你可以重构成方法;
var x = (someCondition) ? MethodA() : MethodB();
这又假设有一个返回值。
int i = 7, j = 8;
Func<int, int, int> dummy = ((a,b) => b);
int k = (i < 5) ? dummy(i++, j--) : dummy(i--, j++);
Console.WriteLine("{0}, {1}, {2}", i, j, k);