To część ciekawości, a częściowo dlatego, że próbowałem po prostu użyć tego. Jeśli masz następujące definicje, kompilator nie zezwala na to, ponieważ mówi, że element jest już zdefiniowany. Jakie jest uzasadnienie braku dopuszczalnego wyłączenia ogólnych parametrów typu?Przeciążanie ogólnych parametrów typu niedozwolone?
void Get<T>() where T: struct {}
void Get<T>() where T: class {}
Wydaje mi się, że nie ma z tym nieodłącznego problemu. Można argumentować, że nie zawsze jest jasne, który kompilator powinien wybrać w przypadkach, w których definicje nakładają się (ale wspólna rozdzielczość wydaje się być najbardziej specyficznym dopasowaniem).
Czy ktoś może mi pomóc zrozumieć lub wskazać zasób, za którym to uzasadnieniem się nie zgadza?
Ciekawe, jakie rzeczy próbowałaś wykorzystać w rzeczywistości? – AakashM
@AakashM: proste, musiałem konwertować typy zerowane w inny sposób niż nie-zerowalne typy wartości. Myślałem, że ogólne przeciążenie to szybki sposób, aby to naprawić. Metoda przyjmuje obiekt i typ param i nie mogę ograniczyć parametru typu (cóż, mogę, ale nie mogę go przeciążać). – Abel