【问题标题】:c# parallel foreach loop finding indexc#并行foreach循环查找索引
【发布时间】:2017-02-04 09:53:44
【问题描述】:

我正在尝试读取文本文件中的所有行并计划显示每行信息。如何找到循环内每个项目的索引?

string[] lines = File.ReadAllLines("MyFile.txt");
    List<string> list_lines = new List<string>(lines);
    Parallel.ForEach(list_lines, (line, index) =>
      {
         Console.WriteLine(index);
    //   Console.WriteLine(list_lines[index]);
         Console.WriteLine(list_lines[0]);
       });
       Console.ReadLine();

【问题讨论】:

  • 你的index有什么问题?
  • 这里的索引在调试时显示真假。
  • 啊,因为正如柯蒂斯所说,index 是回调的第三个参数,而不是第二个。

标签: c# loops parallel-foreach


【解决方案1】:

another overload 对应于 Parallel.ForEach,它为您提供索引。

Parallel.ForEach(list_lines, (line, state, index) =>
    {
        Console.WriteLine(index);
        Console.WriteLine(list_lines[(int)index]); // The type of the `index` is Long.
    });     

【讨论】:

  • 用回调参数(line)代替list_lines[index]不是更好吗?
  • 当然,这只是一个示例,表明该行在语法和语义上是有效的(index 是正确的类型并且在语义上表示当前行的索引)。
  • 可能是我要找的,我试过后会回复你的。
猜你喜欢
  • 2016-07-14
  • 2014-09-12
  • 2011-06-02
  • 1970-01-01
  • 2018-04-19
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
相关资源
最近更新 更多