На этот вопрос уже есть ответ здесь:
Я пытаюсь использовать условный (тернарный )оператор, чтобы присвоить переменной правильное лямбда-выражение в зависимости от условия, но получаю ошибку компилятора:Тип условного выражения не может быть определен, так как не существует неявного преобразования между «лямбда-выражением» и «лямбда-выражением» . Я могу использовать обычный 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);