Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重载方法的泛型调用_C#_Generics_Overloading - Fatal编程技术网

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); } 公共静态

我在尝试调用重载方法时遇到了C#泛型的问题。如果你能帮助我,我将不胜感激

我调用
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);
    }
 }