如何使用条件运算符编写多个语句?(关于IT技术)

6

我正在使用条件运算符来代替if else,但是在我的情况下,我有多个语句如下:

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

我该如何使用条件运算符?和:来编写相同的代码?

1
这是试图使用某些东西只因为它很酷而不必要的一个例子。 - BoltClock
4个回答

15

三元运算符是用于计算替代表达式的,而不是调用替代语句。

如果你有两组逻辑上具有相同结果类型的语句,你可以重构代码将它们分别放在单独的方法中:

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

但如果它们逻辑上更多与副作用相关而不是评估结果,我会使用一个if块。


2
你无法这样做,因为三目运算符是一个表达式,而不是语句。你必须使用if-else结构来实现你想要的效果。

1

只有当它们公开了流畅的API并具有返回值(即允许您将多个步骤压缩到单个表达式中的内容)时,才能这样做。例如:

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

否则呢?不行;每个情况只能评估一个表达式。当然,你可以重构成方法;

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

这又假设有一个返回值。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接