加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

.net – 可以不配置MemoryStream / StringReader吗?

发布时间:2020-12-15 04:53:12 所属栏目:Java 来源:网络整理
导读:我想创建一个返回XmlReader的方法.根据具体情况,可以向XmlReader提供不同类型的流,StringReader或MemoryStream. 通常我使用一个使用块来处理StringReader或MemoryStream,但是因为我想要返回一个XmlReader,如果我想要使用这个设计,我不能这样做. 我不希望Memo
我想创建一个返回XmlReader的方法.根据具体情况,可以向XmlReader提供不同类型的流,StringReader或MemoryStream.

通常我使用一个使用块来处理StringReader或MemoryStream,但是因为我想要返回一个XmlReader,如果我想要使用这个设计,我不能这样做.
我不希望MemoryStream分配大量的内存,所以我可以忍受资源释放的轻微延迟.

在这种情况下让GC处理StringReader和MemoryStream的后果是否可以接受?

我应该澄清,这是一个实际问题,而不是最佳实践问题.显然,这个理论要求我应该清理自己的资源分配,但理论上也说我应该选择最简单的设计来实现最大的可维护性.在某些情况下,打破最佳实践可以证明IMHO是合理的,我的问题是这个具体案例是否有理由打破最佳实践.

这也只是关于StringReader和MemoryStream,而不是一般的流或读者.
我在这种情况下证明它的理由是,StringReader / MemoryStream的实际创建被很好地封装在返回XmlReader的方法中,因此可以控制XmlReader不会被提供有限资源的流.

解决方法

在这种情况下,没有什么会受到影响,但IMO仍然是非常糟糕的做法.你拥有它们 – 为什么不正确呢?实际上,处理MemoryStream仍然无法解除分配等 – 它仍然受GC限制.但是这里有一个明显的代码味道.如果有任何变化,这可能成为真正的问题,突然间它不是MemoryStream而是其他东西,等等.

我们不能让你处理它,但个人:我对我的使用很挑剔

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读