C# 面试题 目录

C# 中 IDisposable 接口的作用和用法

推荐答案

-- -------------------- ---- -------
------ ----- ---------- - -----------
-
    ------- ---- --------- - ------

    -- -- ----------- --- ------- --
    ------ ---- ---------
    -
        --------------
        --------------------------
    -

    -- --------------
    --------- ------- ---- ------------ ----------
    -
        -- ------------
        -
            -- -----------
            -
                -- ------
            -

            -- -------
            --------- - -----
        -
    -

    -- ---------------
    -------------
    -
        ---------------
    -
-

本题详细解读

IDisposable 接口的作用

IDisposable 接口用于释放非托管资源。非托管资源是指那些不由 .NET 运行时管理的资源,例如文件句柄、数据库连接、网络套接字等。通过实现 IDisposable 接口,可以确保这些资源在使用完毕后被正确释放,避免内存泄漏。

IDisposable 接口的用法

  1. 实现 IDisposable 接口:类需要实现 IDisposable 接口,并提供一个 Dispose 方法。Dispose 方法用于释放资源。

  2. Dispose 方法Dispose 方法通常调用一个受保护的虚方法 Dispose(bool disposing),该方法根据 disposing 参数的值来决定是释放托管资源还是非托管资源。

  3. 析构函数(Finalizer):析构函数用于在对象被垃圾回收时释放非托管资源。析构函数调用 Dispose(false),确保只释放非托管资源。

  4. GC.SuppressFinalize:在 Dispose 方法中调用 GC.SuppressFinalize(this),以防止垃圾回收器调用析构函数,因为资源已经被显式释放。

使用示例

在上述代码中,using 语句确保 MyResource 对象在使用完毕后自动调用 Dispose 方法,释放资源。

纠错
反馈