Tôi muốn sử dụng các phương thức quá tải để nhận kết quả khác nhau theo các loại chung khác nhau. Nó không hoạt động. Mã của tôi cho thấy rõ ràng.lỗi quá tải C# cho loại chung
static class Helper
{
public static bool Can(int i)
{
return true;
}
public static bool Can(Object o)
{
return false;
}
}
class My<T>
{
public static bool can = Helper.Can(default(T));
}
Console.WriteLine(Helper.Can(default(int)));//True,it is OK
Console.WriteLine(My<int>.can);//false?? why the overload doesn't work
Console.WriteLine(My<Object>.can);//false
Tại sao My<int>
gọi Helper.Can (Object o) thay vì Helper.Can (int i)?
Tuyệt vời.Cảm ơn bạn – zilong
Tôi hoàn toàn không đồng ý với tuyên bố rằng "thông số loại chung được giải quyết khi chạy". Nếu đó là trường hợp, trình biên dịch không thể nói tại thời gian biên dịch mà bạn không thể có được một mục int từ một 'Danh sách'. * Những gì * được xem là chưa được giải quyết tại thời gian biên dịch là các lần xuất hiện của tham số kiểu generic trong lớp chung. –
@ O.R.Mapper: Tôi có nghĩa là trong lớp học chung chung. – SLaks