使用 EndOfStream 和检查 null 有什么区别?

Mas*_*ick 2 c# null stream while-loop

我正在编写一个大型应用程序,其中涉及来自进程或文件流的一些流。下面有两个示例,展示了检测流结束的不同方法。我很好奇有什么区别以及哪一个最好使用?效率或性能有什么区别吗?另外,在 .NET 参考指南中,我注意到他们在方法中检查 null ,例如ReadAllLines从文件中流式传输(类似于下面的示例 2),那么为什么他们不使用EndOfStream

示例1:

...
StreamReader std_out = myProcess.StandardOutput;

while (!std_out.EndOfStream)
{
    string rLine = std_out.ReadLine();
    //Do something...
}
...
Run Code Online (Sandbox Code Playgroud)

示例2:

...
string rLine;
StreamReader std_out = myProcess.StandardOutput;

while ((rLine = std_out.ReadLine()) != null)
{
    //Do something...
}
...
Run Code Online (Sandbox Code Playgroud)

干杯。

Pet*_*iho 5

没有实际区别。无论文档如何读取,仅当当前缓冲流位置位于流末尾时(即当您实际读取所有文本时)才EndOfStream返回。true

因此,这取决于哪一个对您来说更好和/或哪一个更适合您正在编写的代码的结构。