Tôi đang gặp vấn đề thực sự lạ này với câu lệnh có điều kiện khi đặt giá trị Action<T>
. Nó không phải là tôi không biết làm thế nào để làm việc xung quanh này vì nó khá dễ dàng để giải quyết bằng cách sử dụng một bình thường if
.Tuyên bố điều kiện, đại biểu không cần thiết của đại biểu không cần thiết
Dưới đây là vấn đề của tôi:
public class Test
{
public bool Foo { get; set; }
public Action<bool> Action { get; set; }
public void A()
{
Action = Foo ? B : C;//Gives compiler error
}
public void B(bool value)
{
}
public void C(bool value)
{
}
}
này mang lại cho tôi một lỗi biên dịch với thông điệp
Không có chuyển đổi ngầm giữa 'phương pháp nhóm' và 'phương pháp nhóm'.
Điều kỳ lạ là tôi không thể hiểu tại sao điều này là bất hợp pháp.
Bằng cách này, cú pháp dưới đây sẽ làm cho điều này có hiệu lực (từ quan điểm trình biên dịch của view):
public void A()
{
Action = Foo ? (Action<bool>) B : C;
}
Vì vậy, có lẽ bạn có thể đọc các câu hỏi như, tại sao các diễn viên cần thiết?
tôi nghĩ trình biên dịch C# đủ thông minh để kiểm tra xem ... –