Назначить лямбда-выражение с помощью условного (троичного )оператора [дублировать]

Я пытаюсь использовать условный (тернарный )оператор, чтобы присвоить переменной правильное лямбда-выражение в зависимости от условия, но получаю ошибку компилятора:Тип условного выражения не может быть определен, так как не существует неявного преобразования между «лямбда-выражением» и «лямбда-выражением» . Я могу использовать обычный if -else для решения этой проблемы, но условный оператор имеет для меня больше смысла (в этом контексте ), сделал бы код более кратким добавить, по крайней мере, я хотел бы знать причины, почему это не работает.

// this code compiles, but is ugly! :)
Action<int> hh;
if (1 == 2) hh = (int n) => Console.WriteLine("nope {0}", n);
else hh = (int n) => Console.WriteLine("nun {0}", n);

// this does not compile
Action<int> ff = (1 == 2)
  ? (int n) => Console.WriteLine("nope {0}", n)
  : (int n) => Console.WriteLine("nun {0}", n);
22
задан Gerardo Lima 3 July 2012 в 11:02
поделиться