可能重复:
泛型方法重载的问题
这是一个简单的代码:
static class Example
{
static int DoIt(object o) { return 0; }
class A { }
static int DoIt(A a) { return 1; }
static int CallDoIt<X>(X x) { return DoIt(x); }
static void Main()
{
var a = new A();
System.Console.WriteLine(DoIt(a)); // returns 1 (as desired)
System.Console.WriteLine(CallDoIt(a)); // returns 0
}
}
结果看起来很奇怪:直接调用的函数 DoIt() 返回的值与从另一个函数调用它的情况不同。这是 C# 中的预期行为吗?如果是,如何实现所需的行为(最好没有反射)?