ID Artikel: 315528 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

Bagaimana menerapkan membuang metode di kelas turunan dalam Visual Basic.BERSIH atau pada Visual Basic 2005

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Ketika Anda penulis kelas yang memperpanjang kelas dasar, Anda perlu untuk entah bagaimana menangani rilis legitimasi. Untuk melakukan hal ini, Membuang metode dari kelas dasar harus diganti di kelas turunan. Artikel ini membahas masalah umum yang dihadapi dalam skenario ini, bagaimana untuk benar menimpa Membuang metode, dan dimaksudkan untuk memperjelas beberapa seluk-beluk dalam berikut Visual Basic.Artikel bantuan NET:
.aspx http://msdn2.Microsoft.com/en-us/library/fs2xkftw (vs.71) (http://msdn2.microsoft.com/en-us/library/fs2xkftw(vs.71).aspx)
Mengacu pada dokumen bantuan ini untuk informasi rinci tentang penanganan kesalahan dan contoh-contoh umum Membuang metode.

INFORMASI LEBIH LANJUT

Kelas dasar harus berisi serangkaian kelebihan beban Membuang metode. Contoh pertama kode contoh berikut adalah versi tanpa parameter, dan contoh kedua menerima Boolean parameter:
'Method that is called by Public to ensure TRUE is passed to Dispose
Public Overloads Notoverridable Sub Dispose()
    Dispose( TRUE )
    ' Take yourself off of the finalization queue.
    GC.SuppressFinalize(Me)
End Sub

'Method that does the actual disposal of resources
Protected Overloads Overridable Sub Dispose(ByVal disposing As Boolean)
    'Clean Up Resources
End Sub
				

Dispose() adalah metode yang disebut ketika objek adalah dibuang ke dalam kode di mana objek diciptakan. Ini adalah Publik metode, dan karena itu ia dapat digunakan ketika sebuah instance dari kelas ada. The Dispose() metode kemudian panggilan Dispose(Boolean) metode dan melewati nilai BENAR. The Dispose(Boolean) metode ini bertanggung jawab untuk membersihkan sumber daya kelas.
Ketika kelas berasal dari kelas dasar, hanya Dispose(Boolean) metode perlu ditimpa. Semua sumber daya-pembersihan untuk kelas yang diturunkan akan dilakukan dalam metode ditimpa ini, dan kemudian Dispose(Boolean) metode untuk kelas dasar disebut. Berikut ini adalah contoh primitif fungsi override kelas dasar:
Protected Overloads Overrides Sub Dispose(disposing As Boolean)
   'Clean Up Resources
   MyBase.Dispose( disposing )
End Sub
				
Kelas yang diturunkan tidak perlu Dispose() metode, karena metode yang mewarisi dari kelas dasar. Kapan Dispose() disebut pada sebuah instance dari kelas yang diturunkan, Dispose() menggunakan Dispose(Boolean) kelas yang diturunkan daripada satu di kelas dasar. Hal ini kemudian penting yang Dispose(Boolean) metode dari kelas yang diturunkan panggilan Dispose(Boolean) metode dari kelas dasar. Hal ini dilakukan melalui MyBase.Dispose(disposing) metode. The Dispose(Boolean) metode untuk kelas dasar harus dipanggil untuk memastikan bahwa sumber daya kelas dasar juga dibuang dari.
Dispose() dimaksudkan sebagai entry point untuk akses publik untuk pembuangan objek dan untuk memastikan bahwa BENAR berlalu untuk Dispose(Boolean) metode. PALSU harus lulus hanya ketika Dispose(Boolean) metode ini disebut oleh runtime atau Menyelesaikan metode. Kapan PALSU adalah berlalu, hanya unmanaged sumber daya akan dibuang. Kapan BENAR berlalu, kedua dikelola dan sumber daya tidak dikelola dibuang.
Lingkungan pengembangan Visual Studio menyisipkan kode untuk menimpa Dispose() metode ke kelas yang mewarisi sistem objek (misalnya, Mewarisi System.Windows.Forms.TextBox). Ini dilakukan dari menu (di atas jendela kode, secara default) dengan memilih Mengabaikan lalu mengklik Dispose(). Kode yang disisipkan terlihat seperti berikut:
Public Overloads Overrides Sub Dispose()
   'Clean Up Resources
End Sub
				
Jika hal ini dilakukan, tidak ada kesalahan kompilasi yang dibesarkan. Namun, ketika kelas yang diturunkan dimuat pada saat runtime, Anda menerima pesan kesalahan runtime yang mirip dengan berikut ini:
Unhandled pengecualian tipe 'System.TypeLoadException' terjadi di system.windows.forms.dll.

Informasi tambahan: deklarasi yang dirujuk dalam pelaksanaan metode tidak dapat metode akhir. Tipe: ClassLibrary1.UserControl1. Majelis: membuang.
CATATAN: Jenis nilai akan berbeda dari yang pada contoh sebelumnya. Itulah hanya nama kelas yang berusaha untuk menggunakan tidak semestinya ditimpa Dispose() metode.
Untuk memperbaiki masalah ini, hanya berlebihan Dispose(Boolean) metode bukan Dispose(), dan pastikan bahwa panggilan yang dibuat untuk Dispose(Boolean) metode dari kelas dasar dan yang BENAR dilewatkan ke itu.

CATATAN: Dalam Visual Basic.BERSIH atau pada Visual Basic 2005, Overridable kata kunci yang digunakan seperti Virtual kata kunci dalam C# dan C++. Metode yang, secara default, NotOverridable.

REFERENSI

Topik bantuan yang terkait:

Berlaku bagi:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbvs2005swept kbvs2005applies kberrmsg kbinfo kbmt KB315528 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:315528  (http://support.microsoft.com/kb/315528/en-us/ )