2010-10-31 54 views
1

我想這樣做C#有沒有辦法創建接受匿名函數代碼作爲參數的函數?

NameOfTheMethod(parameters){ 
    // Code... 
} 

還有的使用,的foreach,對等,它們已經內置了,但我不知道是否創建類似的東西,甚至有可能。是嗎?

我問這個問題的原因是,有時候會有很多不同的代碼片段被基本相同的代碼包裝(例如,打開數據庫的連接,創建命令,設置數據庫,測試元素存在於緩存中,如果沒有,去得到它,否則從緩存中得到它,等)

回答

5

是的,你可以採取委託實例作爲參數:

void MyMethod(Func<Arg1Type, Arg2Type, ReturnType> worker) { 
    Arg1Type val1 = something; 
    Arg2Type val2 = somethingelse; 
    ReturnType retVal = worker(something, somethingelse); 
    // ... 
} 

你會稱它爲如:

MyMethod((arg1, arg2) => { 
    // do something here with the arguments 
    return result; 
}); 
+0

太好了,@Mehrdad!你能否提供一個鏈接,讓我可以更多地瞭解這一點。可能我沒有找到足夠好的。謝謝! – 2010-10-31 19:32:01

+1

C#有辦法通過Delegates將arount類型安全指針傳遞給函數:http://msdn.microsoft.com/en-us/library/ms173171(VS.80).aspx Func和Action都是特定類型的委託爲方便傳遞函數指針而創建。 – Euphoric 2010-10-31 21:05:59

相關問題