【发布时间】:2017-12-29 04:58:42
【问题描述】:
我正在实现Stream 类。新类支持读写,但不支持搜索。
MSDN 表示这将返回流的长度。由于它同时支持读取和写入,我不知道字符串在所有写入完成之前需要多长时间。
我应该像 SetLength 和 Position 一样为此抛出 NotSupportedException 吗?
文档并没有表明这是正确的行为,但是,如果我确实返回了一个值,那么我应该如何计算它?
【问题讨论】:
我正在实现Stream 类。新类支持读写,但不支持搜索。
MSDN 表示这将返回流的长度。由于它同时支持读取和写入,我不知道字符串在所有写入完成之前需要多长时间。
我应该像 SetLength 和 Position 一样为此抛出 NotSupportedException 吗?
文档并没有表明这是正确的行为,但是,如果我确实返回了一个值,那么我应该如何计算它?
【问题讨论】:
来自Stream.Length的文档
NotSupportedException:从 Stream 派生的类不支持查找。
另外来自Stream.CanSeek的文档:
如果派生自 Stream 的类不支持查找,则对 Length、SetLength、Position 和 Seek 的调用将引发 NotSupportedException。
所以我会抛出它而不是尝试计算任何东西,即使你知道操作结束时的值。
【讨论】: