Lambda and Foreach
本文关键字:Foreach and Lambda | 更新日期: 2023-09-27 17:54:53
我有这个方法:
public Wrapper(Action<string> codeBlock)
{
//Code code code
Parallel.ForEach<Computer>(Computers, computer =>
{
//CODE CODE
codeblock();
//More code
);
//more code
}
我用它把一个代码块放入包装器中,包装器对我的应用程序有重要的作用。
我用类似
的东西来调用它Wrapper((s) => {
//My Code block
//code
//More code
});
我想在我的代码块中使用在包装器的foreach中创建的集合Computers的对象computer。所以如果我这样写:
Wrapper((s) => {
//My Code block
AFunction(computer);
//More code
});
它显然失败了,因为"computer"不存在于我调用包装器的上下文中,只存在于包装器的foreach中。
那我怎么才能做到呢?也许我的设计有问题?
使用
public Wrapper(Action<Computer> codeBlock)
{
//...
Parallel.ForEach<Computer>(Computers, computer =>
{
//...
codeblock(computer);
//...
);
}
。
Wrapper((s) => { // s is of type Computer here now
//...
AFunction(s);
//...
});
当然,如果你需要在代码块中同时使用Computer
和string
,你可以使用Action<T1,T2>
(即具有必要数量参数的相关委托)。Lambda表达式会相应改变:(s, comp) => { /*...*/ }