如何将foreach与IEnumerable一起使用
本文关键字:String 一起 IEnumerable foreach | 更新日期: 2023-09-27 17:56:54
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
}
我想获取行的内容并显示在消息框中。但是我在foreach上收到错误
感谢您的协助。
你需要给循环变量一个类型,所以改变
foreach(line in lines)
自
foreach(string line in lines)
除此之外,您还将获得另一个例外:
ObjectDisposedException : {"无法从关闭的 TextReader 读取。
File.ReadLines
不返回集合,它类似于StreamReader
,它允许读取文件而无需先将所有内容读入内存。但它需要一个开放的溪流。一旦你"执行"了它,它就会被处置。
因此,您要么必须使用 File.ReadAllLines
返回string[]
,要么不要使用它两次。
-
Count()
-
foreach(line in lines)
从 MSDN:
ReadLines
和ReadAllLines
方法的区别如下: 当您使用 ReadLines,您可以在之前开始枚举字符串的集合 返回整个集合;当您使用全部读取行时,您必须 等待返回整个字符串数组,然后才能访问 数组。因此,当您处理非常大的文件时, ReadLines可以更有效率。
foreach
要求您指定变量的类型和名称。您只指定了line
,它需要成为类型。 隐式类型变量的var
是建议的约定:
foreach (var line in lines) {