我一直在研究C#中的
unmanaged
约束,它在我脑海中提出了一个问题:unmanaged
约束是否与“非托管资源”和垃圾收集器的管理有关?
根据 Microsoft 关于 .NET 垃圾收集器的文档,它指出:
有人可以澄清“非托管”约束与垃圾收集器对非托管资源的管理之间是否有直接关系吗?
非托管对象是在 .NET 库的控制之外创建的,并且不受 CLR 管理,此类非托管代码的示例是 COM 对象、文件流、连接对象、Interop 对象。 (基本上,.NET 代码中引用的第三方库。) 垃圾收集和 C# (codingame.com)
.NET 垃圾收集器无法跟踪这些资源,因为它们不是托管环境的一部分,因此需要开发人员显式清理它们,通常通过实现
IDisposable
接口并调用 Dispose
方法。
如果您的类型使用非托管资源,您应该执行以下操作: