2011-03-14 3 views
6

Я пишу условный оператор вместо if else. Но я в моем случае у меня есть несколько операторов следующим образомКак написать несколько операторов с помощью условного оператора

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

Как мог я написать то же самое с помощью условного оператора ? and :

+1

Это один экземпляр пытается использовать что-то излишне просто потому, что это круто. – BoltClock

ответ

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); 
Смежные вопросы