当我看到这篇博文时,我正致力于使用 XML 对类对象进行序列化和反序列化,该博文展示了如何使用隔离存储区域在 Windows Phone 7 上执行此操作。 Windows Phone 7 是我开发的平台:
在this example ,他明确调用 Dispose() 的唯一对象是 TextReader 对象。我在 MSDN 上查找了 TextReader 对象,发现 the documentation是这样说的:
Releases the unmanaged resources used by the TextReader and optionally releases the managed resources.
所以我假设他这样做的原因是立即释放 TextReader 对象获取的非托管资源。如果不是因为他的博客文章,我不会想到这样做。显然,我不想对可见的每个对象都开始调用 Dispose(),那么至少要调查某个特定对象何时应调用 Dispose() 的良好经验法则是什么?是否有一些指导方针或某个地方的列表,至少是需要这种特殊处理的流行 .NET 对象?
最佳答案
Obviously I don't want to start calling Dispose() on every object in
错了。
一般来说,任何实现了IDisposable
的对象应该在您完成后立即处理,通常使用 using
声明。
大多数没有非托管资源的对象不实现IDisposable
(并且没有 Dispose()
方法),因此您无需担心。
唯一的异常(exception)是实现 IDisposable
的基类以防某些派生实现需要处理(例如 IEnumerator
、 Component
或 TextReader
)。
但是,需要处置哪些具体实现并不总是很明显(并且它可能随时发生变化),因此您应该始终处置它们。
关于c# - 哪些 C# 类对象获取非托管资源?有名单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801884/