C# 兰姆达和弗雷奇
我有这个方法:C# 兰姆达和弗雷奇,c#,.net,C#,.net,我有这个方法: public Wrapper(Action<string> codeBlock) { //Code code code Parallel.ForEach<Computer>(Computers, computer => { //CODE CODE codeblock(); //More code )
public Wrapper(Action<string> codeBlock)
{
//Code code code
Parallel.ForEach<Computer>(Computers, computer =>
{
//CODE CODE
codeblock();
//More code
);
//more code
}
我想在我的代码块中使用集合计算机的对象计算机,它是在包装器的foreach中创建的。
如果我做了这样的东西:
Wrapper((s) => {
//My Code block
AFunction(computer);
//More code
});
它显然失败了,因为“计算机”不存在于调用包装器的上下文中,只存在于包装器的foreach中
那么我怎样才能做到这一点呢?也许我的设计有错误?使用
public Wrapper(Action<Computer> codeBlock)
{
//...
Parallel.ForEach<Computer>(Computers, computer =>
{
//...
codeblock(computer);
//...
);
}
当然,如果在代码块中同时需要
计算机
和字符串
,则可以使用操作
(即具有必要数量参数的相关委托)。Lambda表达式将相应地更改:(s,comp)=>{/*…*/}
那么它不应该是公共包装器(动作代码块)
?
public Wrapper(Action<Computer> codeBlock)
{
//...
Parallel.ForEach<Computer>(Computers, computer =>
{
//...
codeblock(computer);
//...
);
}
Wrapper((s) => { // s is of type Computer here now
//...
AFunction(s);
//...
});