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上得到了一个错误
谢谢你的帮助。
答案 0 :(得分:1)
你需要给循环变量一个类型,所以改变
foreach(line in lines)
到
foreach(string line in lines)
除此之外,你还会得到另一个例外:
ObjectDisposedException:{&#34;无法从已关闭的TextReader中读取。&#34;}
File.ReadLines
不返回集合,它类似于StreamReader
,它允许读取文件而不首先读入内存。但它需要一个开放的流。一旦你执行了#34;它被处置了。
因此,您必须使用File.ReadAllLines
返回string[]
或不使用它两次。
Count()
foreach(line in lines)
来自MSDN:
ReadLines
和ReadAllLines
方法的不同之处如下:使用时 ReadLines,您可以先开始枚举字符串集合 整个系列归还;当你使用ReadAllLines时,你必须 在您可以访问之前等待返回整个字符串数组 数组。因此,当您使用非常大的文件时, ReadLines可以更有效率。
答案 1 :(得分:0)
foreach
要求您指定变量的类型和名称。您只指定了line
,它就是类型。隐式输入变量的var
是the suggested convention:
foreach (var line in lines) {