当我通过 Visual Studio 的代码分析实用程序运行一些代码时收到警告,我不确定如何解决。也许这里有人遇到过类似的问题,解决了它,并愿意分享他们的见解。
我正在编写 DataGridView 控件中使用的自定义绘制单元格。代码类似于:
public class DataGridViewMyCustomColumn : DataGridViewColumn
{
public DataGridViewMyCustomColumn() : base(new DataGridViewMyCustomCell())
{
}
它会生成以下警告:
CA2000:Microsoft.Reliability:在对对象“new DataGridViewMyCustomCell()”的所有引用超出范围之前,在方法“DataGridViewMyCustomColumn.DataGridViewMyCustomColumn()”中调用 System.IDisposable.Dispose。
我知道它警告我 DataGridViewMyCustomCell(或它继承自的类)实现了 IDisposable 接口,并且应调用 Dispose() 方法来清理 DataGridViewMyCustomCell 不再声明的任何资源。
我在互联网上看到的示例建议使用 using 块来确定对象的生命周期并让系统自动处理它,但是当移入构造函数的主体时无法识别 base,因此我无法编写 using阻止它......我不确定我是否想要这样做,因为这不会指示运行时释放以后仍可以在基类中使用的对象吗?
那么我的问题是,代码可以吗?或者,如何重构它来解决警告?我不想压制警告,除非它确实适合这样做。