【发布时间】:2012-02-19 03:14:12
【问题描述】:
可能重复:
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# 中未实现的功能?
【问题讨论】:
-
可以通过添加指向重复答案的链接来改进此重复文本。如果您找不到解决方案并且搜索没有返回任何结果,或者结果太多,那真是令人沮丧。
标签: c# .net generics c#-4.0 overloading