在C#的循环外访问并行ForEach中的变量集可以通过闭包或临时变量的方式实现。
闭包是指在嵌套函数内部访问外部函数作用域中的变量。在并行ForEach中,我们可以使用闭包来访问外部循环中的变量集。具体操作如下:
示例代码如下:
List<int> variableList = new List<int>();
Parallel.ForEach(collection, item =>
{
// 操作item以及其他逻辑
// 将需要访问的变量通过闭包引用进去
// 可以使用lock关键字保护并发访问的代码块
lock (variableList)
{
variableList.Add(item);
}
});
// 循环结束后可以直接访问外部变量variableList获取并行ForEach中的变量集
另一种方式是使用临时变量来存储并行ForEach中的变量集。具体操作如下:
示例代码如下:
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中的变量集,并且可以适应并发访问的情况。具体使用哪种方式取决于具体的需求和场景。
领取专属 10元无门槛券
手把手带您无忧上云