首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#的循环外访问并行ForEach中的变量集?

在C#的循环外访问并行ForEach中的变量集可以通过闭包或临时变量的方式实现。

闭包是指在嵌套函数内部访问外部函数作用域中的变量。在并行ForEach中,我们可以使用闭包来访问外部循环中的变量集。具体操作如下:

  1. 定义一个外部变量,用于存储循环外访问的变量集。
  2. 在并行ForEach的委托中,将需要访问的变量通过闭包引用进去。
  3. 在循环结束后,可以直接访问外部变量来获取并行ForEach中的变量集。

示例代码如下:

代码语言:txt
复制
List<int> variableList = new List<int>();

Parallel.ForEach(collection, item =>
{
    // 操作item以及其他逻辑
    // 将需要访问的变量通过闭包引用进去
    // 可以使用lock关键字保护并发访问的代码块

    lock (variableList)
    {
        variableList.Add(item);
    }
});

// 循环结束后可以直接访问外部变量variableList获取并行ForEach中的变量集

另一种方式是使用临时变量来存储并行ForEach中的变量集。具体操作如下:

  1. 定义一个临时变量,在并行ForEach的委托中将需要访问的变量存储到临时变量中。
  2. 在循环结束后,可以通过访问临时变量来获取并行ForEach中的变量集。

示例代码如下:

代码语言:txt
复制
List<int> variableList = new List<int>();

Parallel.ForEach(collection, () => new List<int>(), (item, loopState, localList) =>
{
    // 操作item以及其他逻辑
    // 将需要访问的变量存储到临时变量localList中
    // 可以使用lock关键字保护并发访问的代码块

    lock (localList)
    {
        localList.Add(item);
    }

    return localList;
},
localList =>
{
    // 循环结束后,可以通过访问localList来获取并行ForEach中的变量集
    lock (variableList)
    {
        variableList.AddRange(localList);
    }
});

// 可以直接访问外部变量variableList获取并行ForEach中的变量集

以上两种方式可以在C#的循环外访问并行ForEach中的变量集,并且可以适应并发访问的情况。具体使用哪种方式取决于具体的需求和场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券