Stream.Read:EOF vs 0 count

时间:2017-09-01 06:21:55

标签: c# stream

documentation for Stream.Read说:

  

如果流中没有更多数据 > > > > > > > > > >

从这里可以看出,Read即使0传递给count参数也不应该返回0。

但是我用MemoryStream测试了它,它返回0:

var mem = new MemoryStream(new byte[] {1, 2, 3, 4});
var buf = new byte[0];
var ret = mem.Read(buf, 0, buf.Length);
Console.WriteLine(ret); // prints 0

这是否意味着文档丢失了什么?
如果count为0,那么实现是否会抛出异常?

1 个答案:

答案 0 :(得分:0)

您已请求0个字节,因此Read函数只读取零个字节。

输出为0,它基于documentation

  

返回

     

读入缓冲区的总字节数。这个   如果有很多字节,则可以小于请求的字节数   当前不可用,如果流的末尾已经为零,则为零(0)   达到。

在您的示例

中,零是'请求的字节数'