2012-08-25 109 views
0

我想重載一個函數而不使用可選參數。當我使用泛型時,我遇到了一個問題;然而,它適用於簡單的類型。我很困惑,所以感謝您的幫助。 B類使用int來驗證我的語法;而C類是我想要完成的。傳遞函數

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 


namespace X 
{ 
    class A 
    { 
    } 
    class B 
    { 

     public static int f(int i1, int i2) 
     { 
      return i1 + 12; 
     } 
     public int ix(Func<int,int,int> f1,int v1) 
     { 
      return 1; 
     } 
     public void iy(Func<int, int, int> f1, int v1) 
     { 
      int i = ix(f1, 1); 
     } 
     public void iz() 
     { 
      int i = ix(f, 1); 
     } 
    } 

    class C 
    { 
     public static List<A> f(List<A> a, int v) 
     { 
      return new List<A>(); 
     } 
     public int ax(Func<List<A>, List<A>, int> f1, int v1) 
     { 
      return 1; 
     } 
     public void ay(Func<List<A>, List<A>, int> f1, int c) 
     { 
      int i = ax(f1, c); 
     } 
     public void az() 
     { 
      int i = ax(f, 1); 
     } 
    } 
} 
+4

那麼究竟是什麼問題呢?你試過了什麼,錯誤是什麼? –

回答

0

您有一個小錯誤。您的方法簽名不匹配。

你需要改變你的C.F(..)的定義應該是:

public static int f(List<A> a, List<A> b) 
{ 
    return 1; //List<A>(); 
} 
+0

@丹尼爾曼你是否暗示這不是一個答案,因爲他沒有發佈一個真正的問題? – Sam

+1

感謝您引導我解決問題。我的Func參數順序是倒置的;我的Func(結果,輸入)應該是Func(輸入,結果)。 – user1623809