2010-10-31 55 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

相关问题