Stream.Read 的文档指出:
但是,在使用
由此可见,即使将 0 传递给只有当流中没有更多数据且不再需要更多数据(例如已关闭的套接字或文件结束)时,才会返回 0。
count
参数,Read
也不应该返回 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,一个实现是否可以抛出异常?
count == 0
是一个有效的参数,因此一个好的实现不会抛出异常。 - LuaanTimeoutException
)。正如@Luaan所指出的那样,这可以用于阻止,直到有可读取的内容而实际上并未从缓冲区读取单个字节。 - Sinatr读入缓冲区的总字节数。如果当前没有那么多字节可用,则此值可能小于请求的字节数,或者如果已到达流的末尾,则为零(0)
。但是备注部分是不正确/令人困惑的,因为它说只有在没有更多数据和不再期望时才返回0(请注意“only”)。 - wingerse