我有一个目前有终结器的类,但没有实现IDisposable。 微软声称"它是一个版本改变,将IDisposable接口添加到现有类,因为它改变了类的语义"。 该课程是否应该修复'并实现IDisposable?
答案 0 :(得分:0)
如果您控制使用此类的所有代码,则可以执行此操作,并更新代码以调用Dispose。否则,这不是一个好主意,因为现有的外部代码不会调用您的Dispose()。
答案 1 :(得分:0)
如果添加IDisposable,则需要添加代码以在实例化类的所有代码中调用dispose()方法。如果调用/实例化您的类的所有代码都不是由您管理的,那么这可能并不容易,并导致无关的对象。
答案 2 :(得分:0)
这取决于,但基本上没有。终结器只是一个调用释放内存的清理方法,没有任何承诺暗示它将通过使用代码来调用。 IDisposable告诉全世界,即使出现错误,也必须为类的实例调用dispose方法。如果这描述了你的代码,它应该首先是一次性的,所以答案是肯定的。但是,如果是这种情况,您必须更改所有使用您的课程的代码,以确保他们称之为一次性。