如何使用带有IEnumerable <string> </string>的foreach

时间:2014-04-04 14:36:28

标签: c# string ienumerable

System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("C:\\Rooms.txt");
Console.WriteLine(lines.Count());
MessageBox.Show(lines.Count().ToString());
foreach(var line in lines)
{
    // ERROR ON THIS LINE THE NAMESPACE NAME LINE COULD NOT BE FOUND
}

我想获取行的内容并在MessageBox中显示。 但是我在foreach上得到了一个错误

谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

你需要给循环变量一个类型,所以改变

foreach(line in lines)  

foreach(string line in lines) 

除此之外,你还会得到另一个例外:

  

ObjectDisposedException:{&#34;无法从已关闭的TextReader中读取。&#34;}

File.ReadLines不返回集合,它类似于StreamReader,它允许读取文件而不首先读入内存。但它需要一个开放的流。一旦你执行了#34;它被处置了。

因此,您必须使用File.ReadAllLines返回string[]或不使用它两次。

  1. Count()
  2. foreach(line in lines)
  3. 来自MSDN:

      

    ReadLinesReadAllLines方法的不同之处如下:使用时   ReadLines,您可以先开始枚举字符串集合   整个系列归还;当你使用ReadAllLines时,你必须   在您可以访问之前等待返回整个字符串数组   数组。因此,当您使用非常大的文件时,   ReadLines可以更有效率。

答案 1 :(得分:0)

foreach要求您指定变量的类型和名称。您只指定了line,它就是类型。隐式输入变量的varthe suggested convention

foreach (var line in lines) {