gpt4 book ai didi

c# - 确定托管资源与非托管资源

转载 作者:IT王子 更新时间:2023-10-29 04:48:55 29 4
gpt4 key购买 nike

有很多关于托管资源和非托管资源的问题。我了解两者的基本定义。但是,我很难知道资源或对象何时受管或不受管。

当我想到非托管资源时,我倾向于想到不直接属于 .NET 的 native 代码,例如 pinvoke 或编码资源。我通常会认为资源旨在连接到将使用硬件的东西,例如文件句柄或网络连接也是不受管理的。

包装 native 非托管资源(例如 FileStream)的 .NET 对象呢?

FileStream 必须使用非托管资源,但是当我实现 IDisposable 模式时,我应该将其视为托管资源还是非托管资源?

到目前为止,我一直假设如果对象实现了 IDisposable,那么它就是被管理的。我怎么知道 IntPtr 应该作为非托管资源处理?

最佳答案

A FileStream must use unmanaged resources, but when I implement the IDisposable pattern, should I consider this a managed or unmanaged resources?

FileStream 是一种托管资源

托管资源是包含(并且必须管理)非托管资源的类。通常实际资源在几层之下。

I've been assuming thus far that if the object implements IDisposable, then it is managed.

正确。

How would I know that IntPtr should be handled as an unmanaged resoruce?

从 API 的文档中获取其值(value)。但请注意,在实践中,大多数程序员从不直接处理非托管资源。当您确实需要时,使用 SafeHandle 类将非托管资源转换为托管资源。

关于c# - 确定托管资源与非托管资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786570/

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