0

我已经实现IDisposable了 Interface 和下面的 class 代码A

我也应该处理类的对象B吗?

        public class A : IDisposable
        {
            private B _objB = null;

            public A()
            {
                _objB = new B();
            }

            public void Load(string fileName, int loadFlags)
            {
                _objB .Load(fileName, 0);
            }
            public void Close()
            {
                _objB .Reset();
            }

            public void Dispose()
            {
                GC.SuppressFinalize(this);
            }
        }

在 voidDispose()方法中,我将类AGC.SuppressFinalize(this);

在类中A我声明类B,所以它需要使用相同的处理C.SuppressFinalize(_objB);

4

1 回答 1

4

您完全误解了 GC.SuppressFinalize() 的作用。仅当您的类具有析构函数(又名终结器)时才重要。你没有,所以不要打电话。如果 B 实际上实现了 IDisposible ,那么只需将其处置:

    public void Dispose()
    {
        _objB.Dispose();
    }

假设 _objB 可以安全地多次释放,并且在释放后使用它已经生成 ObjectDisposedException。

于 2013-07-09T08:36:53.527 回答