C#ではデストラクタ構文~Class()、VBではFinalizeメソッドのオーバーライドによってファイナライザを実装することができます。 C#では、デストラクタ構文によってObject.Finalizeメソッドがオーバーライドされることになります。 (このため、厳密に言えばC#にデストラクタは存在しない)

ファイナライザを実装できるのは、クラスに限られます。 構造体でファイナライザを実装することはできません。 また、静的クラス・モジュール(VB)についても同様で、静的な(staticSharedな)ファイナライザを実装することはできません。

ファイナライザを実装する(Object.Finalizeをオーバーライドする)
Imports System

Class Resource
  ' コンストラクタ
  Public Sub New()
    Console.WriteLine("constructed")
  End Sub

  ' ファイナライザ
  Protected Overrides Sub Finalize()
    Console.WriteLine("finalized")
  End Sub
End Class

Class Sample
  Shared Sub AllocateAndRelease()
    Dim res As New Resource()
  End Sub

  Shared Sub Main()
    ' オブジェクトを作成して、そのまま放棄する(破棄・解放ではない)
    AllocateAndRelease()

    ' ガベージコレクションを行わせ、ファイナライザの呼び出しを待機する
    ' (例示のためのものであり、通常は不必要に呼び出すものではない)
    GC.Collect()
    GC.WaitForPendingFinalizers()
  End Sub
End Class
実行結果
constructed
finalized

この例で使用しているGC.Collectメソッド・GC.WaitForPendingFinalizersメソッドについては§.ガベージコレクタへの要求 (GCクラス)を参照してください。