我正在向要写入的方法发送一个流,在这些方法中我使用的是二进制阅读器/ wrtier.当读取器/写入器被处理时,using或者仅在未被引用时,流也被关闭?
我会发送一个BinaryReader/Writer,但我也在使用StreamReader(也许我应该绕过它.我只使用GetLine和ReadLine).如果每次作家/读者关闭时关闭流,这是非常麻烦的.
我想创建一个返回XmlReader的方法.根据具体情况,可以向XmlReader提供不同类型的流,StringReader或MemoryStream.
通常我使用一个使用块来处理StringReader或MemoryStream,但是因为我想要返回一个XmlReader,如果我想要使用这个设计,我不能这样做.我不希望MemoryStream分配大量的内存,所以我可以忍受资源释放的轻微延迟.
在这种情况下让GC处理StringReader和MemoryStream的后果是否可以接受?
我应该澄清,这是一个实际问题,而不是最佳实践问题.显然,这个理论要求我应该清理自己的资源分配,但理论上也说我应该选择最简单的设计来实现最大的可维护性.在某些情况下,打破最佳实践可以恕我直言,我的问题是这个具体案例是否有理由打破最佳实践.
这也只是关于StringReader和MemoryStream,而不是一般的流或读者.我在这种情况下证明它的理由是,StringReader/MemoryStream的实际创建被很好地封装在返回XmlReader的方法中,因此可以控制XmlReader不会被提供有限资源的流.