2011-04-28 131 views
0

我嘗試調用重載方法時遇到了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

不會'void callPrint (T item)'更有意義嗎? – Groo 2011-04-28 16:26:11

回答

1

嗯,這就是所謂對所有類型進行一次確定。您的String printObject(String o)只有在T是一個字符串時纔有效 - 否則不是,所以編譯器無法將泛型方法綁定到此靜態類型化方法。