Tôi là người mới đến Stack Overflow vì vậy hãy dễ dàng đi với tôi! Tôi đang đọc C# trong Depth nhưng tôi đã bắt gặp một kịch bản mà tôi không tin là được bảo hiểm. Tìm kiếm nhanh trên web cũng không làm tăng bất kỳ kết quả nào.Loại suy luận cho các đối số kiểu của các phương thức chung
Nói rằng tôi xác định các phương pháp quá tải sau:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
Nếu tôi gọi AreEqual()
mà không chỉ định một đối số kiểu:
AreEqual("Hello", "Hello")
Sản phẩm phiên bản generic hoặc không chung của phương pháp này gọi? Là phương pháp chung được gọi với đối số kiểu được suy ra, hoặc là phương pháp không chung chung được gọi với các đối số phương thức được ngầm đúc đến System.Object
?
Tôi hy vọng câu hỏi của tôi là rõ ràng. Cảm ơn trước cho tất cả lời khuyên.
bạn có thể viết một số mã đơn giản để kiểm tra ... –
http://blogs.msdn.com/b/ericlippert/archive/2009/07/30/generics-are-not-templates.aspx –
@Mitch Wheat - đúng, nhưng sau đó tôi sẽ không phải làm cho bài viết đầu tiên của tôi. Và nó hữu ích cho những người khác để xem câu trả lời ở đây. – zekesteer