Tôi đang cố gắng sử dụng toán tử điều kiện (ternary) để gán biểu thức lambda thích hợp cho biến, tùy thuộc vào điều kiện, nhưng tôi gặp lỗi trình biên dịch: Loại biểu thức điều kiện không thể được xác định bởi vì không có chuyển đổi tiềm ẩn giữa 'biểu thức lambda' và 'biểu thức lambda'. Tôi có thể sử dụng if-else bình thường để giải quyết vấn đề này, nhưng toán tử có điều kiện có ý nghĩa hơn với tôi (trong ngữ cảnh này), sẽ làm cho mã ngắn gọn hơn, ít nhất, tôi muốn biết lý do tại sao nó không ' t làm việc.Chỉ định biểu thức lambda sử dụng toán tử điều kiện (ternary)
// 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);
Cảm ơn sự giàu có của bạn.okelly, Nikhil Agrawal, Romain Verdier và Alex! Tất cả các câu trả lời của bạn là chính xác (biên dịch và đưa ra kết quả chính xác), nhưng sự lựa chọn của tôi đi đến rich.okelly vì lời giải thích của ông. –