2014-11-04 64 views
0

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

实施例1:

... 
StreamReader std_out = myProcess.StandardOutput; 

while (!std_out.EndOfStream) 
{ 
    string rLine = std_out.ReadLine(); 
    //Do something... 
} 
... 

实施例2:

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

while ((rLine = std_out.ReadLine()) != null) 
{ 
    //Do something... 
} 
... 

干杯。

+2

[在同一语句中检查null和流结束]的可能重复(http://stackoverflow.com/questions/20763353/check-for-null-and-end-of-stream-in-same-statement ) – MethodMan 2014-11-04 06:04:39

+0

基本上检查EndOfStream是不必要的,因为如果它在Stream的末尾,它将返回'null' ..所以只需检查while((line = std_out.ReadLine())!= null)' – MethodMan 2014-11-04 06:07:08

+0

@DJ克拉泽在我发布之前我看了一下,但并没有真正回答我的问题。基本上,我想知道使用任何一个的区别。 – 2014-11-04 08:33:20

回答

4

没有实际区别。尽管文档读取方式如何,EndOfStream仅返回true,此时当前的缓冲的流位置在流的末尾(即您实际上已经读取了所有文本)。

因此,可以归结为哪一个看起来更好,哪个更适合您正在编写的代码的结构。

相关问题