Это отчасти любопытство, а отчасти потому, что я просто пытался использовать это. Если у вас есть следующие определения, это не разрешено компилятором, потому что он говорит, что член уже определен. В чем причина запрета эксклюзивных перегрузок параметров универсального типа?
void Get<T>() where T: struct {}
void Get<T>() where T: class {}
Мне кажется, что в этом нет никакой внутренней проблемы. Кто-то может возразить, что не всегда ясно, какой компилятор должен выбрать в случаях, когда определения перекрываются (но обычное разрешение кажется наиболее конкретным совпадением в первую очередь).
Может ли кто-нибудь помочь мне понять или указать ресурс, по какой причине запрещается это?