Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 兰姆达和弗雷奇_C#_.net - Fatal编程技术网

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);
    //...
});