thể trùng lặp:
Generic constraints, where T : struct and where T : classKhông có khả năng quá tải phương pháp chung với các ràng buộc kiểu
Có một lý do cụ thể mà bạn không thể quá tải phương pháp chung sử dụng loại chế loại trừ lẫn nhau trong C#? Ví dụ, có những phương pháp:
T DoSomething<T>(T arg) where T : class
{ /* Do something */ }
T DoSomething<T>(T arg) where T : struct
{ /* Do something */ }
và cố gắng gọi chúng với
DoSomething("1");
DoSomething(1);
Con đường tôi nhìn thấy nó, các DoSomething() phương pháp loại trừ lẫn nhau như xa như các thông số mà họ sẽ mất - cái đầu tiên có kiểu tham chiếu, kiểu thứ hai lấy một kiểu giá trị. Trình biên dịch sẽ có thể nói rằng cuộc gọi DoSomething với một đối số chuỗi đi đến phương thức đầu tiên và cuộc gọi DoSomething với đối số int đi đến phương thức thứ hai.
Tôi có thiếu cái gì đó mang tính khái niệm với generics ở đây không? Hay đây chỉ là một tính năng không được triển khai trong C#?
văn bản trùng lặp này có thể được cải thiện bằng cách thêm một liên kết đến câu trả lời trùng lặp. Nó thực sự bực bội nếu bạn không thể tìm thấy một giải pháp và tìm kiếm không trả lại bất kỳ kết quả nào, hoặc cách nào, quá nhiều kết quả. –