Konversi Implisit dan Eksplisit (Visual Basic)
Sebuah konversi implisit tidak memerlukan sintaks khusus dalam kode sumber. Dalam contoh berikut, Visual Basic secara implisit mengonversi nilai k
menjadi nilai floating-point presisi tunggal sebelum menetapkannya ke q
.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
Konversi eksplisit menggunakan kata kunci konversi jenis. Visual Basic menyediakan beberapa kata kunci tersebut, yang memaksa ekspresi dalam tanda kurung ke jenis data yang diinginkan. Kata kunci ini bertindak seperti fungsi, tetapi pengompilasi menghasilkan kode sebaris, sehingga eksekusi sedikit lebih cepat daripada dengan pemanggilan fungsi.
Dalam ekstensi contoh sebelumnya berikut, kata kunci CInt
mengonversi nilai q
kembali ke bilangan bulat sebelum menetapkannya ke k
.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Kata Kunci Konversi
Tabel berikut menunjukkan kata kunci konversi yang tersedia.
Ketik kata kunci konversi | Mengonversi ekspresi menjadi jenis data | Jenis ekspresi data yang diizinkan untuk dikonversi |
---|---|---|
CBool |
Jenis Data Boolean | Jenis numerik apa pun (termasuk Byte , SByte , dan tipe terbilang), String , Object |
CByte |
Jenis Data Byte | Jenis numerik apa pun (termasuk SByte dan tipe terbilang), Boolean , String , Object |
CChar |
Jenis Data Karakter | String , Object |
CDate |
Jenis Data Tanggal | String , Object |
CDbl |
Jenis Data Ganda | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CDec |
Jenis Data Desimal | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CInt |
Jenis Data Bilangan Bulat | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CLng |
Jenis Data Panjang | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CObj |
Jenis Data Objek | Jenis apa pun |
CSByte |
Jenis Data SByte | Jenis numerik apa pun (termasuk Byte dan tipe terbilang), Boolean , String , Object |
CShort |
Jenis Data Pendek | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CSng |
Jenis Data Tunggal | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CStr |
Jenis Data String | Jenis numerik apa pun (termasuk Byte , SByte , dan tipe terbilang), Boolean , Char , larikChar , Date , Object |
CType |
Jenis yang ditentukan setelah koma (, ) |
Saat mengonversi ke jenis data elementary (termasuk larik dari jenis elementary), jenis yang sama seperti yang diizinkan untuk kata kunci konversi yang sesuai Saat mengonversi ke jenis data komposit, antarmuka yang diterapkannya dan kelas tempatnya mewarisi Saat mengonversi ke kelas atau struktur tempat Anda kelebihan beban CType , kelas atau struktur tersebut |
CUInt |
Jenis Data UInteger | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CULng |
Jenis Data ULong | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
CUShort |
Jenis Data UShort | Semua jenis numerik (termasuk Byte , SByte , dan tipe terbilang), Boolean , String , Object |
Fungsi CType
Fungsi CType beroperasi pada dua argumen. Yang pertama adalah ekspresi yang akan dikonversi, dan yang kedua adalah jenis data tujuan atau kelas objek. Perhatikan bahwa argumen pertama harus berupa ekspresi, bukan jenis.
CType
adalah fungsi sebaris, yang berarti kode yang dikompilasi membuat konversi, sering kali tanpa menghasilkan panggilan fungsi. Ini meningkatkan performa.
Untuk perbandingan CType
dengan kata kunci konversi jenis lainnya, lihat Operator DirectCast dan Operator TryCast.
Jenis Elementary
Contoh berikut menunjukkan penggunaan CType
.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Jenis Komposit
Anda dapat menggunakan CType
untuk mengonversi nilai ke jenis data komposit serta ke jenis dasar. Anda juga dapat menggunakannya untuk memaksa kelas objek ke jenis salah satu antarmukanya, seperti dalam contoh berikut.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Jenis Larik
CType
juga dapat mengonversi jenis data larik, seperti pada contoh berikut.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Untuk informasi selengkapnya dan contohnya, lihat Konversi Larik.
Jenis Yang Menentukan CType
Anda dapat menentukan CType
pada kelas atau struktur yang telah Anda tentukan. Ini memungkinkan Anda untuk mengonversi nilai ke dan dari jenis kelas atau struktur Anda. Untuk informasi selengkapnya dan contohnya, lihat Cara: Menentukan Operator Konversi.
Catatan
Nilai yang digunakan dengan kata kunci konversi harus valid untuk jenis data tujuan, atau terjadi kesalahan. Misalnya, jika Anda mencoba mengonversi Long
menjadi Integer
, nilai Long
harus berada dalam rentang yang valid untuk jenis data Integer
.
Perhatian
Menentukan CType
untuk mengonversi dari satu jenis kelas ke jenis lain gagal pada durasi jika jenis sumber tidak berasal dari jenis tujuan. Kegagalan seperti itu melemparkan pengecualian InvalidCastException.
Namun, jika salah satu jenisnya adalah struktur atau kelas yang telah Anda tetapkan, dan jika Anda telah menetapkan CType
pada struktur atau kelas tersebut, konversi dapat berhasil jika memenuhi persyaratan CType
Anda. Lihat Cara: Menentukan Operator Konversi.
Melakukan konversi eksplisit juga dikenal sebagai transmisi ekspresi ke jenis data atau kelas objek tertentu.
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