Các quy tắc liên quan đến chức năng Quá tải là gì?C# quy tắc quá tải chức năng
Tôi có đoạn mã sau:
public T genericFunc<T>() where T : Component, new()
{
T result = new T();
overloadedFunction(result);
}
private overloadedFunction (Component c) // catch all function
private overloadedFunction (DerivedFromComponent dfc) // specific function
khi tôi gọi mã trên với:
genericFunc<DerivedFromComponent>();
tôi hy vọng các overloadedFunction cụ thể hơn để được gọi, tuy nhiên bắt tất cả các hàm được gọi thay vì , tại sao thế này ?. Khi bước qua đoạn mã trên, kiểu T thực sự là DerivedFromComponent, tôi nghĩ rằng CLR đã chọn kết quả phù hợp nhất có thể khi chạy!
Doh, và trong thời gian nó đã cho tôi để viết Jon Skeet này cũng ghi nhận động. – Josh
Nếu chỉ có tôi có thể có được quản lý để mùa xuân cho một bản sao mới sáng bóng của VS2010 tất cả các rắc rối của tôi sẽ bốc hơi ... nhưng than ôi tôi bị mắc kẹt với NET 3.5 và VS2008. –
Thành thật mà nói, tôi sẽ không khuyên bạn sử dụng mã trên để giải quyết vấn đề. Nó không phải là một ví dụ rất tốt về việc sử dụng hợp lý cho độ phân giải động. – Josh