什么类在其构造函数中调用SuppressFinalize,以使您的dispose调用无用?

ill*_* mg 1 .net c# dispose suppressfinalize

有些类如DataTable已经在其构造函数中调用了SuppressFinalize,因此没有必要在其上调用dispose/use.(因为处置是为了更早发布,但没有什么可以释放)

那么,我想知道这些类的列表或通过反射找到这些类的列表的方法?

Gid*_*rth 6

你的问题假设无效.呼叫SuppressFinalize与其有用性无关Dispose.当您通过显式或通过using块调用它时,Dispose方法仍将执行其中所写的任何操作.

通常,Dispose将调用SupressFinalize,但这是因为当您遵循典型的Dispose模式时,Dispose将执行从终结器运行的代码.由于代码已经运行,因此不需要最终化,这是一个相对昂贵的操作,因此Dispose将调用SupressFinalize.

  • @illmg那将是更好的问题,但仍然可能仅作为琐事有用.一般来说,如果它实现了IDisposable,我会处理它,而不是试图深入了解实现细节,以确定我是否真的需要.这也可以防止您切换到需要处理的类似类或接口实现的错误,但忘记添加调用. (2认同)