如果我需要保留"包裹"流,我应该处理BinaryReader吗?

11 .net c# dispose stream

两个BinaryReader 构造函数都需要流参数.如果我需要在完成后保持底层流BinaryReader,我还应该调用它Dispose()吗?如果没有,是否还有其他不需要的清理工作BinaryReader

我问,因为我无法在MSDN页面BinaryReader.Dispose()上找到明确的答案.

小添加

在我的上下文中,我使用BinaryReader读取几个字节,之后我将流的位置设置回BinaryReader初始化之前的位置.

另外,我正在使用.Net 4.

Pet*_*hie 14

如果您(或其他人正在阅读这些寻找答案)正在使用VS 2012与.NET 4.5(或更高版本),您可以创建一个BinaryReader不会关闭流.例如:

using(var reader = new BinaryReader(theStream, new UTF8Encoding(), true)
{
//...
}
Run Code Online (Sandbox Code Playgroud)

new UTF8Encoding如果您使用BinaryReader(Stream)构造函数,则默认为默认值,如果您不想使用UTF8Encoding,则可以使用其他内容.在true表示"是的,离开流开".


Jon*_*eet 11

不,BinaryReader如果你想保持流打开,没有处理它是没关系的.

我可能会添加评论,说明虽然这是怎么回事-我不知道是否它保证BinaryReader从流至于你已经从阅读具有只读BinaryReader......它可能已经阅读更进例如,缓冲区.显然,如果你在流上寻找,那不是问题.