Próbuję użyć operatora warunkowego (trójkowego) do przypisania odpowiedniego wyrażenia lambda do zmiennej, w zależności od warunku, ale pojawia się błąd kompilatora: Typ Wyrażenia warunkowego nie można określić, ponieważ nie istnieje żadna niejawna konwersja między wyrażeniem lambda i wyrażeniem lambda. Mogę użyć zwykłego if-else, aby rozwiązać ten problem, ale operator warunkowy ma dla mnie więcej sensu (w tym kontekście), sprawiłby, że kod byłby bardziej zwięzły, przynajmniej chciałbym poznać powody, dla których nie działa ". t działa.Przypisywanie wyrażenia lambda za pomocą operatora warunkowego (trójkowego)
// 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);
Dziękuję za Twoją terminowość rich.okelly, Nikhil Agrawal, Romain Verdier i Alex! Wszystkie twoje odpowiedzi były poprawne (skompiluj i podaj poprawny wynik), ale mój wybór trafia do bogatych.zwykle z powodu jego wyjaśnienia. –