C# 重载方法的泛型调用
我在尝试调用重载方法时遇到了C#泛型的问题。如果你能帮助我,我将不胜感激 我调用C# 重载方法的泛型调用,c#,generics,overloading,C#,Generics,Overloading,我在尝试调用重载方法时遇到了C#泛型的问题。如果你能帮助我,我将不胜感激 我调用Example.test() 公共类示例 { 私有字符串printObject(对象o) { //这就是所谓的 } 私有字符串printObject(字符串o) { //这就是我希望被称为 } 私有void callPrint(对象o) { if(o是T) { T-tmp; tmp=(T)o; 数据=_printObject(tmp); } } 公共字符串foo(对象o) { callPrint(o); } 公共静态
Example.test()
公共类示例
{
私有字符串printObject(对象o)
{
//这就是所谓的
}
私有字符串printObject(字符串o)
{
//这就是我希望被称为
}
私有void callPrint(对象o)
{
if(o是T)
{
T-tmp;
tmp=(T)o;
数据=_printObject(tmp);
}
}
公共字符串foo(对象o)
{
callPrint(o);
}
公共静态无效测试()
{
字符串test=“test”;
foo(测试);
}
}
那么,对于所有类型,必须一次确定调用哪一个。只有当T
是字符串时,您的String printObject(String o)
才有效,否则,编译器无法将泛型方法绑定到此静态类型的方法。将作废callPrint(T项)
是否更有意义?
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);
}
}