Operator DirectCast (Visual Basic)
Memperkenalkan operasi konversi jenis berdasarkan pewarisan atau implementasi.
Keterangan
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 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk