2015-11-06 48 views
0

我有一個代理函數做回調。 我想要做的是以下幾點:如何在函數調用中定義委託函數?

delegate void someDelegate(int i); 
callFunction(int i, someDelate del) 
{ 
    del.invoke(i); 
} 
callFunction(10, void(int i) 
{ 
    printf(i); 
}); 

我知道這是可能的,但我無法找到它了。

+1

從您提供的僞代碼中很難判斷您想要做什麼。請提供一個簡短但完整的例子。例如,你期望'void(int i)'意味着什麼?你真的只是在尋找lambda表達式嗎? 'callFunction(10,i => Console.WriteLine(i))'? –

+0

我想要做的是爲函數創建一個定義,以便我不必離開函數體本身,這樣我仍然可以在調用函數中定義變量。例如,當使用線程和當我得到一個線程完成執行的回調時,我想要在創建線程的原始函數中處理該回調。否則,我丟失了我正在使用的數據 – GeekPeek

+0

我認爲這是類似於 callFunction(10,new someDelegate(int i) {printf(i); }); – GeekPeek

回答

4

是這樣的lambda語法你在找什麼?

class Program 
{ 
    static void Main(string[] args) 
    { 
     callFunction(10, (i) => 
     { 
      //printf(i); 
     }); 
    } 

    public delegate void someDelegate(int i); 
    public static void callFunction(int i, someDelegate del) 
    { 
     del.Invoke(i); 
    } 

} 
+0

不是至少,我想要做的就是處理原始調用中的回調。因此,在這個例子中,假設我在main中做了一些計算,然後創建另一個線程來執行一些其他計算,我想要相同的函數(static void Main)來處理線程執行完成的回調,所以我以前的計算是在相同的範圍內。 請參閱我不調用實際函數,我只知道回調的簽名是什麼。 – GeekPeek