0

クラスのVB6.0では、次のようになります。

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

今、私はC#で同じことをする必要があります、私はそれらの2つのnullオブジェクトについてあまり心配していませんが、呼び出されているそのdarn MethodFoo()は私がそれを必要とします。それをC#の同等のクラスに追加するのに安全な場所はどこですか?(Finalizerメソッドではありません)、C#クラスにこのfinalizerメソッドがあるため、すでに奇妙なエラーが発生しており、それも取り除きたいと思っています。

4

2 に答える 2

4

C#はガベージコレクションされます。つまり、決定論的なオブジェクトのクリーンアップはありません。

代わりに、ブロックIDisposable内でクラスを実装して使用する必要があります。using()

于 2012-11-28T22:16:40.247 に答える
1

カスタム ファイナライザーは、ガベージ コレクターによって非決定論的に呼び出されるため、C# では避ける必要があります。

IDisposableインターフェイスを実装し、Dispose()代わりにメソッドを使用してください。正しいやり方の記事はこちら。

于 2012-11-28T22:20:31.367 に答える