gpt4 book ai didi

.net - 可以不处理 MemoryStream/StringReader 吗?

转载 作者:行者123 更新时间:2023-12-04 22:16:28 26 4
gpt4 key购买 nike

我想创建一个返回 XmlReader 的方法。根据情况,可以为 XmlReader 提供不同类型的流,StringReader 或 MemoryStream。

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

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

我应该澄清一下,这是一个实际问题,而不是最佳实践问题。显然,理论要求我应该清理我自己的资源分配,但理论也表明我应该更喜欢最简单的设计,以获得最大的可维护性。在某些情况下,违反最佳实践恕我直言是合理的,我的问题是这个具体案例是否证明违反最佳实践是合理的。

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

最佳答案

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

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

关于.net - 可以不处理 MemoryStream/StringReader 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com