2016-11-11 77 views
3

在C#中,我想要做這樣的事情。有沒有辦法存儲一個函數,它的參數在一個變量中以後再調用?

var fn = // set it to the function and parameters it'll use 

fn(); 

在一個假設的例子,說我想和所有它需要執行的參數返回一個函數,我只是想從別的地方執行。

+4

var fn =()=> SomeFunction(arg1,arg2); – Evk

+0

downvoter能解釋我的問題有什麼問題嗎?如果我不清楚我在問什麼,我想解決它。 – Yatrix

+1

他們幾乎從來沒有做過...... –

回答

6

您可以創建一個Action委託調用帶參數的功能:

var fn =() => OtherFunction(param1, param2); 

如果參數可以fn改變之前被調用,你可以讓他們分配給新的變量參數的副本,如果是按值或

var value1 = param1; // In case of value types. 
var value2 = param2; // In case of value types. 
var fn =() => OtherFunction(value1, value2); 

再後來調用fn行動:如果是通過參考實施一些Clone機制

fn(); 
+4

請注意,如果您在調用fn()之前更改了'param1'或'pram2'的值[它將使用更新後的值,而不是創建委託時的值](https:// blogs .msdn.microsoft.com /無光澤/ 2008/03/01 /理解可變捕獲式-C /)。 –

+1

@ScottChamberlain:是的,的確如此,應該牢記這一點。 –

+1

我以前實際上做過這件事,而我無法記住我的生活。在星期五的凌晨4點之後粉化。謝謝! – Yatrix

相關問題