2015-07-09 34 views
0

我一直在尋找一段時間,我可以如何使這項工作。 例如:C#如何傳遞函數作爲參數?

CheckPerformance(***Loop***);  

    private void CheckPerformance(***Function myFunctionName***) 
    { 
     sw.Start(); 
     myFunctionName(200); 
     sw.Stop(); 
     Console.WriteLine("Elapsed in check: {0}", sw.Elapsed); 
    } 

    private void Loop(int n) 
    { 
     for (int i = 0; i < n; i++) 
     { 
      int number = i; 
     } 
    } 

我將如何能夠通過循環作爲參數來動態把功能集成到CheckPerformance()這樣秒錶探查?即使你給我一個這種類型的東西的名字,我可以查找它。

謝謝!

+1

那麼這只是不正確的...... – Charleh

+0

@wazaaaap不,完全錯了! – DavidG

+1

這個問題已被問及公平幾次 - 檢查這一個出http://stackoverflow.com/questions/3622160/c-sharp-passing-function-as-argument – Charleh

回答

2

你傳入void (int)類型的功能,在C#是:

Action<int>

所以,更換您的***Function myFunctionName***Action<int> myFunctionName,你應該是不錯的。 Action類型從0到幾個泛型參數,對應於參數的類型。

如果您的函數返回的內容不是void,則可以使用Func<...>泛型類型。最後一個泛型參數是返回類型。

+0

我告訴過你有多驚人!我正在看Action和func,但沒有真正的想法是什麼區別! – i773

+0

**我不知道我要通過哪個功能!我想通過一個兩個。**當我不知道我將從一個列表中傳遞哪一個函數時,我將如何去作爲參數傳遞函數。說兩個函數newline()和sameline()。我如何從thisprimary函數(somevar,newline())或thisprimaryfunction(somevar,sameline())傳遞它。我怎麼能方便地通過這樣的功能?兩者都是無效類型。我不需要返回值。 –

+0

** int函數(void)** ?? –

相關問題