我在尝试调用重载方法时遇到C#泛型问题。如果你能帮助我,我将不胜感激。
我致电Example.test()
public class Example
{
private String printObject(Object o)
{
//this is the one that is called
}
private String printObject(String o)
{
//this is the one I expect to be called
}
private void callPrint<T>(Object o)
{
if (o is T)
{
T tmp;
tmp = (T)o;
data = _printObject(tmp);
}
}
public String foo(Object o)
{
callPrint<String>(o);
}
public static void test()
{
String test="Test";
foo(test);
}
}
答案 0 :(得分:1)
嗯,必须为所有类型确定调用一次。只有String printObject(String o)
是字符串时,T
才有效 - 否则不会,因此编译器无法将泛型方法绑定到此静态类型的方法。