c# - 使用 foreach 之前需要存储列表吗?

标签 c# foreach

MSDN example显示此:

    // Open the file to read from. 
    string[] readText = File.ReadAllLines(path);
    foreach (string s in readText)
    {
        Console.WriteLine(s);
    }

但我在想:

    // Open the file to read from. 
    foreach (string s in File.ReadAllLines(path))
    {
        Console.WriteLine(s);
    }

最佳答案

假设 readText 从未在其他地方使用过,这两个代码片段之间没有区别。

即使在第二种情况下,方法调用的结果最终也会存储在某个地方,即使该位置没有您可以在代码中引用的名称。 p>

顺便说一句,如果您只想遍历各行,则可以使用 ReadLines 而不是 ReadAllLines 来流式传输文本行,而不是在处理任何行之前急切地将整个文件加载到内存中。这可以防止在访问第一行之前出现较长的延迟,如果您在处理所有行之前最终退出循环,则可以显着提高速度(请记住,除了显式退出循环之外,这还可能由于异常而发生) ),并显着减少程序的内存占用,即使您最终处理了所有行。

关于c# - 使用 foreach 之前需要存储列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560558/

相关文章:

c# - WCF 服务和 QuickBooks Web 连接器之间没有匹配的契约(Contract)

c# - 动态创建图像

c# - 如何以编程方式为 IIS7 创建子域?

r - 使 .combine 函数可扩展

php - 警告为foreach()提供了无效的参数

PHP - foreach 循环中的 mysqli_query

c# - 在 C# 中构建(转义)JavaScript 正则表达式

c# - Windows 服务中的并行任务

php - Wordpress/PHP 循环,显示前 3 项,然后单击加载更多

c# - 使用 HTMLNode 的 foreach 循环中的 NullReferenceException 错误