Bagikan melalui


DirectCast Operator (Visual Basic)

Memperkenalkan operasi konversi jenis berdasarkan pewarisan atau implementasi.

Komentar

DirectCast tidak 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 Objectdata .

Anda menggunakan kata kunci yang DirectCast mirip dengan cara Anda menggunakan Operator CType dan kata kunci Operator TryCast . Anda memberikan ekspresi sebagai argumen pertama dan jenis untuk mengonversinya menjadi sebagai argumen kedua. DirectCast memerlukan hubungan pewarisan atau implementasi antara jenis data dari dua argumen. Ini berarti bahwa satu jenis harus mewarisi dari atau mengimplementasikan yang lain.

Kesalahan dan Kegagalan

DirectCast menghasilkan kesalahan kompilator jika mendeteksi bahwa tidak ada pewarisan atau hubungan implementasi. Tetapi kurangnya kesalahan kompilator tidak menjamin konversi yang berhasil. Jika konversi yang diinginkan menyempit, itu bisa gagal pada waktu proses. Jika ini terjadi, runtime melemparkan InvalidCastException kesalahan.

Kata Kunci Konversi

Perbandingan kata kunci konversi jenis adalah sebagai berikut.

Kata kunci Jenis data Hubungan argumen Kegagalan run-time
CType Operator Jenis data apa pun Melebarkan atau mempersempit konversi harus didefinisikan di antara dua jenis data Melempar InvalidCastException
DirectCast Jenis data apa pun Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Melempar InvalidCastException
TryCast Operator Jenis referensi saja Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Tidak Mengembalikan Apa-apa

Contoh

Contoh berikut menunjukkan dua penggunaan DirectCast, satu yang gagal pada run time 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 q run-time adalah Double. CType berhasil karena Double dapat dikonversi ke Integer. Namun, yang pertama DirectCast gagal pada run time karena jenis Double run-time tidak memiliki hubungan warisan dengan Integer, meskipun konversi ada. Yang kedua DirectCast berhasil karena mengonversi dari jenis Form ke jenis Control, dari mana Form mewarisi.

Lihat juga