可能重复:
Generic constraints, where T : struct and where T : class
是否有一个特殊的原因是您不能在C#中使用互斥的类型约束来重载泛型方法?例如,采取以下方法:
T DoSomething<T>(T arg) where T : class
{ /* Do something */ }
T DoSomething<T>(T arg) where T : struct
{ /* Do something */ }
并尝试使用
调用它们DoSomething("1");
DoSomething(1);
我看到它的方式,DoSomething()方法就它们将采用的参数是互斥的 - 第一个采用引用类型,第二个采用值类型。编译器应该能够告诉使用字符串参数的DoSomething调用转到第一个方法,并且带有int参数的DoSomething调用转到第二个方法。
我是否遗漏了一些概念性的仿制药?或者这只是一个未在C#中实现的功能?
答案 0 :(得分:8)