Operator DirectCast (Visual Basic)

Memperkenalkan operasi konversi jenis berdasarkan pewarisan atau implementasi.

Keterangan

DirectCasttidak menggunakan rutinitas pembantu run-time Visual Basic untuk konversi, sehingga dapat memberikan performa yang agak lebih baik daripada CType saat mengonversi ke dan dari jenis dataObject.

Anda menggunakan kata kunci DirectCast dengan cara yang sama seperti menggunakan kata kunci Fungsi CType dan Operator TryCast. Anda memberikan ekspresi sebagai argumen pertama dan jenis untuk mengonversinya sebagai argumen kedua. DirectCast membutuhkan hubungan pewarisan atau implementasi antara jenis data dari dua argumen tersebut. Artinya, satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya.

Kesalahan dan Kegagalan

DirectCast menghasilkan kesalahan kompiler jika mendeteksi bahwa tidak ada hubungan pewarisan atau implementasi. Tetapi ketiadaan kesalahan kompiler tidak menjamin keberhasilan konversi. Jika konversi yang diinginkan menyempit, kegagalan pada durasi dapat terjadi. Jika ini terjadi, runtime akan melemparkan kesalahan InvalidCastException.

Kata Kunci Konversi

Berikut adalah perbandingan kata kunci konversi jenis.

Kata kunci Jenis data Hubungan argumen Kegagalan run-time
Fungsi CType Jenis data apa pun Konversi pelebaran atau penyempitan harus ditentukan antara dua jenis data Memberi InvalidCastException
DirectCast Jenis data apa pun Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Memberi InvalidCastException
Operator TryCast Jenis referensi saja Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Mengembalikan Nothing (Kosong)

Contoh

Contoh berikut menunjukkan dua penggunaan DirectCast, satu yang gagal pada durasi dan satu yang berhasil.

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

Dalam contoh sebelumnya, jenis run-time q adalah Double. CType berhasil karena Double dapat dikonversi ke Integer. Namun, DirectCast yang pertama gagal pada durasi karena jenis run-time Double tidak memiliki hubungan pewarisan dengan Integer, meskipun terjadi konversi. DirectCast kedua berhasil karena mengonversi dari jenis Form ke jenis Control, yang diwarisi Form.

Lihat juga