这两个代码之间有什么区别吗?
1.
using (StreamReader sr = New StreamReader("filePath"))
{
while ((string line = sr.ReadLine()) != null)
{
DoSomeThing();
}
}
2.
foreach (string line in new StreamReaderEnumerable("filePath"))
{
if (line != null)
{
DoSomeThing();
}
}
使用其中一个是否有任何性能问题,或者它们在运行时功能相同?
答案 0 :(得分:1)
根据SteamReaderEnumerable
的定义,使用StreamReader.ReadLine()
。我注意到您的自定义解决方案使用相同的方法。因此,我建议使用选项1,因为您没有使用LINQ来处理这些行。这样就可以避免SteamReaderEnumerable
类的额外开销。
如果您确实需要使用LINQ来访问这些行,SteamReaderEnumerable
类将提供一种简单而强大的方法。
答案 1 :(得分:0)
这两个代码之间有什么区别吗?
是的 - 一个有效;一个没有。您的第二个代码块会无休止地循环,因为您永远不会更改while循环中line
的值。 实际等价物将是:
foreach (string line in new StreamReaderEnumerable("filePath"))
{
DoSomeThing();
}
查看示例代码,唯一的区别是枚举器对象的开销,这应该可以忽略不计。