Bagikan melalui


Konversi Implisit dan Eksplisit (Visual Basic)

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 tipe. 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 pengkompilasi menghasilkan kode sebaris, sehingga eksekusi sedikit lebih cepat daripada dengan panggilan fungsi.

Dalam ekstensi contoh sebelumnya berikut, CInt kata kunci mengonversi nilai kembali ke bilangan q 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 ini memperlihatkan kata kunci konversi yang tersedia.

Ketik kata kunci konversi Mengonversi ekspresi ke tipe data Jenis ekspresi data yang diizinkan untuk dikonversi
CBool Tipe Data Boolean Jenis numerik apa pun (termasuk Byte, , SBytedan jenis enumerasi), String, Object
CByte Tipe Data Byte Jenis numerik apa pun (termasuk SByte dan jenis enumerasi), Boolean, , StringObject
CChar Tipe Data Karakter String, Object
CDate Tipe Data Tanggal String, Object
CDbl Jenis Data Ganda Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CDec Tipe Data Desimal Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CInt Tipe Data Integer Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CLng Tipe Data Panjang Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CObj Tipe Data Objek Tipe apa saja
CSByte Tipe Data SByte Jenis numerik apa pun (termasuk Byte dan jenis enumerasi), Boolean, , StringObject
CShort Tipe Data Pendek Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CSng Jenis Data Tunggal Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CStr Tipe Data String Setiap jenis numerik (termasuk Byte, SByte, dan jenis enumerasi), Boolean, Char, Char array, Date, Object
CType Jenis yang ditentukan setelah koma (,) Saat mengonversi ke jenis data dasar (termasuk array jenis dasar), jenis yang sama seperti yang diizinkan untuk kata kunci konversi yang sesuai

Saat mengonversi ke jenis data komposit, antarmuka yang akan diterapkan dan kelas yang diwarisinya dari

Saat mengonversi ke kelas atau struktur tempat Anda telah kelebihan beban CType, kelas atau struktur tersebut
CUInt Tipe Data UInteger Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CULng Tipe Data ULong Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject
CUShort Tipe Data UShort Setiap jenis numerik (termasuk Byte, , SBytedan jenis enumerasi), Boolean, , StringObject

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 Dasar

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 Array

CType juga dapat mengonversi jenis data array, seperti dalam 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 Array.

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.

Nota

Nilai yang digunakan dengan kata kunci konversi harus valid untuk jenis data tujuan, atau terjadi kesalahan. Misalnya, jika Anda mencoba mengonversi Long ke 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 waktu proses jika jenis sumber tidak berasal dari jenis tujuan. Kegagalan seperti itu memunculkan pengecualian InvalidCastException.

Namun, jika salah satu jenis adalah struktur atau kelas yang telah Anda tentukan, dan jika Anda telah menentukan CType struktur atau kelas tersebut, konversi dapat berhasil jika memenuhi persyaratan Anda CType. Lihat Cara: Menentukan Operator Konversi.

Melakukan konversi eksplisit juga dikenal sebagai transmisi ekspresi ke jenis data atau kelas objek tertentu.

Lihat juga