C#中Class_Terminate()的等效值

时间:2012-11-28 22:15:06

标签: c#

在VB 6.0中我有一个类:

Private Sub Class_Terminate()
  Call MethodFoo(False)
  Set objet1 = Nothing
  Set object2 = Nothing
End Sub

现在我需要在C#中做同样的事情,我不太担心那两个null对象,但是被调用的Darn MethodFoo()我需要那个。在C#等效类中添加它的安全位置在哪里? (而不是在Finalizer方法中),由于在我的C#类中使用了这个终结器方法并且想要摆脱它,我已经得到了奇怪的错误。

2 个答案:

答案 0 :(得分:4)

C#被垃圾收集,这意味着没有确定性的对象清理。

相反,您应该实施IDisposable并在using()区块内使用您的班级。

答案 1 :(得分:1)

在C#中应该避免使用自定义终结器,因为它们被垃圾收集器非确定地调用。

实施IDisposable界面,改为使用Dispose()方法。 Here 是一篇如何正确完成的文章。