我有一个简单的 MyDataClass 类,其中包含一个实现 IDisposable 的成员(obj):
public class MyDataClass : IDisposable
{
private DisposableObject obj;
private List<string> list;
private int c;
public MyDataClass()
{
obj = new DisposableObject();
list = new List<string>();
c = 114;
}
public void Dispose()
{
obj.Dispose();
}
}
public class DisposableObject : IDisposable
{
public void Dispose()
{
// Free resource
Console.WriteLine("Dispose DisposableObject");
}
}
当我运行代码分析时,我收到 CA1063 警告,表明我应该在MyDataClass实现的Dispose()方法中调用GC.SuppressFinalize()方法。
我对这个 CA1063 警告感到非常困惑。因为据我所知,我应该调用GC.SuppressFinalize()来指示垃圾收集器:
“嘿 GC,你别管这个对象了,我已经为你做完了所有的清理工作!”
所以请确认我是否错了。如果我将添加GC.SuppressFinalize()我将摆脱 CA1063 但它会导致 GC 不会清理我的对象。所以我会有内存泄漏,因为其他类成员(托管代码)不会被清理。