如何使用条件运算符编写多个语句

时间:2011-03-14 12:17:10

标签: c# conditional-operator

我正在编写条件运算符来代替if else。但我的情况我有以下多个陈述

if (condition)
{
    statement 1;
    statement 2;
}
else
{
    statement 3;
    statement 4;
}

我怎样才能使用条件运算符? and :

来编写它

4 个答案:

答案 0 :(得分:15)

条件运算符用于评估备用表达式,而不是调用备用语句

如果你的两组语句在逻辑上具有相同的结果类型,那么可以重构以将它们中的每一个放在一个单独的方法中:

var result = condition ? Method1() : Method2();

但如果他们在逻辑上更多地考虑副作用而不是评估结果,我会改用if块。

答案 1 :(得分:2)

你不能,因为条件运算符是表达式,而不是语句。你必须使用if-else结构来实现你想要做的事情。

答案 2 :(得分:1)

例如,只有当他们公开一个流畅的API并具有返回值时(即允许您将多个步骤压缩到单个表达式中的东西);例如:

sb = (someCondition) ? sb.Append("foo").Append("bar") 
        : sb.Apppend("cde").Append("fgh");

否则?没有;你只得到一个表达式来评估每个案例。当然,你可以重构方法;

var x = (someCondition) ? MethodA() : MethodB();

再次假定返回值。

答案 3 :(得分:0)

创建一个函数或委托,接受与要评估的表达式数相对应的多个参数:

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);