Powiel możliwe:
Generic constraints, where T : struct and where T : classNiezdolność do przeciążenia metody rodzajowe z ograniczeniami typu
Czy istnieje szczególny powód, że nie można przeciążać metod generycznych za pomocą wzajemnie wykluczające ograniczeń typu w C#? Na przykład, wykonaj następujące metody:
T DoSomething<T>(T arg) where T : class
{ /* Do something */ }
T DoSomething<T>(T arg) where T : struct
{ /* Do something */ }
i spróbować wywołać je
DoSomething("1");
DoSomething(1);
Tak jak ja to widzę, doSomething() metody wykluczają się wzajemnie w miarę parametrów, które wezmą - pierwszy przyjmuje typ odniesienia, drugi wybiera typ wartości. Kompilator powinien być w stanie powiedzieć, że wywołanie DoSomething z argumentem łańcuchowym idzie do pierwszej metody, a wywołanie DoSomething z argumentem int przechodzi do drugiej metody.
Czy brakuje mi czegoś konceptualnego w przypadku generyków? Czy jest to tylko funkcja, która nie została zaimplementowana w C#?
To duplikat tekst można poprawić dodając link do duplikatu odpowiedź. To naprawdę frustrujące, jeśli nie możesz znaleźć rozwiązania, a wyszukiwanie nie zwróci żadnych wyników ani sposobu, czyli zbyt wiele wyników. –