我可以以某种方式拥有仅因泛型类型约束而不同的重载方法吗?
这不会编译:
void Foo<T>(T bar) where T : class
{
}
void Foo<T>(T bar) where T : struct
{
}
由于这些是“开放”方法,因此当在代码中的其他地方使用具体类型引用实际方法时,它应该是关闭/构造/完全定义的T
,然后就会清楚要调用哪个重载。
显而易见的解决方案是不要重载它们,但我想知道为什么这在 C# 中不起作用?
附加问题:如果这只是 C# 编译器约束,IL 是否允许这样的重载?