Bagikan melalui


Fungsi Konversi Jenis (Visual Basic)

Fungsi-fungsi ini dikompilasi sebaris, yang berarti kode konversi adalah bagian dari kode yang mengevaluasi ekspresi. Terkadang tidak ada panggilan ke prosedur untuk menyelesaikan konversi, yang meningkatkan performa. Setiap fungsi memaksa ekspresi ke jenis data tertentu.

Sintaksis

CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)

Bagian

expression
Dibutuhkan. Ekspresi apa pun dari jenis data sumber.

Tipe Data Nilai Yang Dikembalikan

Nama fungsi menentukan jenis data nilai yang dikembalikannya, seperti yang diperlihatkan dalam tabel berikut.

Nama fungsi Mengembalikan jenis data Rentang untuk expression argumen
CBool Tipe Data Boolean Ekspresi valid Char atau String atau numerik apa pun.
CByte Tipe Data Byte Byte.MinValue (0) hingga Byte.MaxValue (255) (tidak ditandatangani); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke byte dengan CByte fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CChar Tipe Data Karakter Setiap valid Char atau String ekspresi; hanya karakter pertama yang String dikonversi; nilai bisa 0 hingga 65535 (tidak ditandatangani).
CDate Tipe Data Tanggal Setiap representasi tanggal dan waktu yang valid.
CDbl Jenis Data Ganda -1.79769313486231570E+308 hingga -4.94065645841246544E-324 untuk nilai negatif; 4.94065645841246544E-324 hingga 1.79769313486231570E+308 untuk nilai positif.
CDec Tipe Data Desimal +/-79.228.162.514.264.337.593.543.950.335 untuk angka tanpa skala, yaitu angka tanpa tempat desimal. Untuk angka dengan 28 tempat desimal, rentangnya adalah +/-7.922816251426437593543950335. Angka non-nol terkecil yang mungkin adalah 0,000000000000000000000000000001 (+/-1E-28).
CInt Tipe Data Integer Int32.MinValue (-2.147.483.648) hingga Int32.MaxValue (2.147.483.647); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat dengan CInt fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CLng Tipe Data Panjang Int64.MinValue (-9.223.372.036.854.775.808) hingga Int64.MaxValue (9.223.372.036.854.775.807); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi bilangan bulat floating-point ke 64-bit dengan CLng fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CObj Tipe Data Objek Ekspresi apa pun yang valid.
CSByte Tipe Data SByte SByte.MinValue (-128) hingga SByte.MaxValue (127); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa floating-point ke konversi byte yang ditandatangani dengan CSByte fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CShort Tipe Data Pendek Int16.MinValue (-32.768) hingga Int16.MaxValue (32.767); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi bilangan bulat floating-point ke 16-bit dengan CShort fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CSng Jenis Data Tunggal -3.402823E+38 hingga -1.401298E-45 untuk nilai negatif; 1.401298E-45 hingga 3.402823E+38 untuk nilai positif.
CStr Tipe Data String Mengembalikan untuk CStr bergantung pada expression argumen. Lihat Mengembalikan Nilai untuk Fungsi CStr.
CUInt Tipe Data UInteger UInt32.MinValue (0) hingga UInt32.MaxValue (4.294.967.295) (tidak ditandatangani); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa floating-point ke konversi bilangan bulat yang tidak ditandatangani dengan CUInt fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CULng Tipe Data ULong UInt64.MinValue (0) hingga UInt64.MaxValue (18.446.744.073.709.551.615) (tidak ditandatangani); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa floating-point ke konversi bilangan bulat panjang yang tidak ditandatangani dengan CULng fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.
CUShort Tipe Data UShort UInt16.MinValue (0) hingga UInt16.MaxValue (65.535) (tidak ditandatangani); bagian pecahan dibulatkan.1

Dimulai dengan Visual Basic 15.8, Visual Basic mengoptimalkan performa floating-point ke konversi bilangan bulat 16-bit yang tidak ditandatangani dengan CUShort fungsi; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt misalnya.

1 Bagian pecahan dapat tunduk pada jenis pembulatan khusus yang disebut pembulatan bankir. Lihat "Komentar" untuk informasi selengkapnya.

Komentar

Sebagai aturan, Anda harus menggunakan fungsi konversi jenis Visual Basic sebagai preferensi pada metode .NET Framework seperti ToString(), baik di Convert kelas atau pada struktur atau kelas jenis individual. Fungsi Visual Basic dirancang untuk interaksi optimal dengan kode Visual Basic, dan juga membuat kode sumber Anda lebih pendek dan lebih mudah dibaca. Selain itu, metode konversi .NET Framework tidak selalu menghasilkan hasil yang sama dengan fungsi Visual Basic, misalnya saat mengonversi Boolean ke Integer. Untuk informasi selengkapnya, lihat Pemecahan Masalah Jenis Data.

Dimulai dengan Visual Basic 15.8, performa konversi floating-point-to-integer dioptimalkan ketika Anda meneruskan Single nilai atau Double yang dikembalikan oleh metode berikut ke salah satu fungsi konversi bilangan bulat (CByte, CShort, CIntCLngCSByteCUShortCUIntCULng):

Pengoptimalan ini memungkinkan kode yang melakukan sejumlah besar konversi bilangan bulat untuk berjalan hingga dua kali lebih cepat. Contoh berikut mengilustrasikan konversi floating-point-to-integer yang dioptimalkan ini:

Dim s As Single = 173.7619
Dim d As Double = s

Dim i1 As Integer = CInt(Fix(s))               ' Result: 173
Dim b1 As Byte = CByte(Int(d))                 ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s))     ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d))      ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s))        ' Result: 174

Perilaku

  • Paksaan. Secara umum, Anda dapat menggunakan fungsi konversi jenis data untuk memaksa hasil operasi ke jenis data tertentu daripada jenis data default. Misalnya, gunakan CDec untuk memaksa aritmatika desimal dalam kasus di mana presisi tunggal, presisi ganda, atau aritmatika bilangan bulat biasanya akan terjadi.

  • Konversi Gagal. Jika yang diteruskan expression ke fungsi berada di luar rentang jenis data yang akan dikonversi, terjadi OverflowException .

  • Bagian Pecahan. Saat Anda mengonversi nilai nonintegral ke jenis integral, fungsi konversi bilangan bulat (CByte, , , CIntCLngCSByte, CShort, CUInt, CULng, dan CUShort) menghapus bagian pecahan dan membulatkan nilai ke bilangan bulat terdekat.

    Jika bagian pecahan tepat 0,5, fungsi konversi bilangan bulat membulatkannya ke bilangan bulat bahkan terdekat. Misalnya, 0,5 membulatkan ke 0, dan 1,5 dan 2,5 keduanya dibulatkan ke 2. Ini kadang-kadang disebut pembulatan bankir, dan tujuannya adalah untuk mengimbangi bias yang dapat terakumulasi ketika menambahkan banyak angka tersebut bersama-sama.

    CInt dan CLng berbeda dari Int fungsi dan Fix , yang memotong, bukan bulat, bagian pecahan dari angka. Selain itu, Fix dan Int selalu mengembalikan nilai dengan jenis data yang sama saat Anda meneruskan.

  • Konversi Tanggal/Waktu. IsDate Gunakan fungsi untuk menentukan apakah nilai dapat dikonversi ke tanggal dan waktu. CDate mengenali literal tanggal dan literal waktu tetapi bukan nilai numerik. Untuk mengonversi nilai Visual Basic 6.0 Date ke Date nilai di Visual Basic 2005 atau versi yang lebih baru, Anda dapat menggunakan metode .DateTime.FromOADate

  • Nilai Tanggal/Waktu Netral. Tipe Data Tanggal selalu berisi informasi tanggal dan waktu. Untuk tujuan konversi jenis, Visual Basic menganggap 1/1/0001 (1 Januari tahun 1) menjadi nilai netral untuk tanggal, dan 00:00:00 (tengah malam) menjadi nilai netral untuk saat itu. Jika Anda mengonversi Date nilai menjadi string, CStr tidak menyertakan nilai netral dalam string yang dihasilkan. Misalnya, jika Anda mengonversi #January 1, 0001 9:30:00# ke string, hasilnya adalah "09:30:00 AM"; informasi tanggal ditekan. Namun, informasi tanggal masih ada dalam nilai asli Date dan dapat dipulihkan dengan fungsi seperti DatePart fungsi.

  • Sensitivitas Budaya. Fungsi konversi jenis yang melibatkan string melakukan konversi berdasarkan pengaturan budaya saat ini untuk aplikasi. Misalnya, CDate mengenali format tanggal sesuai dengan pengaturan lokal sistem Anda. Anda harus memberikan hari, bulan, dan tahun dalam urutan yang benar untuk lokal Anda, atau tanggal mungkin tidak ditafsirkan dengan benar. Format tanggal panjang tidak dikenali jika berisi string hari dalam seminggu, seperti "Rabu".

    Jika Anda perlu mengonversi ke atau dari representasi string dari nilai dalam format selain yang ditentukan oleh lokal Anda, Anda tidak dapat menggunakan fungsi konversi jenis Visual Basic. Untuk melakukan ini, gunakan ToString(IFormatProvider) metode dan Parse(String, IFormatProvider) dari jenis nilai tersebut. Misalnya, gunakan Double.Parse saat mengonversi string menjadi Double, dan gunakan Double.ToString saat mengonversi nilai jenis Double menjadi string.

CType Operator

Operator CType mengambil argumen kedua, typename, dan memaksa expression ke typename, di mana typename dapat berupa jenis data, struktur, kelas, atau antarmuka apa pun yang ada konversi yang valid.

Untuk perbandingan CType dengan kata kunci konversi jenis lainnya, lihat Operator DirectCast dan Operator TryCast.

Contoh CBool

Contoh berikut menggunakan CBool fungsi untuk mengonversi ekspresi ke Boolean nilai. Jika ekspresi mengevaluasi ke nilai bukan nol, CBool mengembalikan True; jika tidak, ekspresi akan mengembalikan False.

Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)

Contoh CByte

Contoh berikut menggunakan CByte fungsi untuk mengonversi ekspresi menjadi Byte.

Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

Contoh CChar

Contoh berikut menggunakan CChar fungsi untuk mengonversi karakter String pertama ekspresi menjadi Char jenis.

Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)

Argumen input harus CChar berjenis Char data atau String. Anda tidak dapat menggunakan CChar untuk mengonversi angka menjadi karakter, karena CChar tidak dapat menerima tipe data numerik. Contoh berikut mendapatkan angka yang mewakili titik kode (kode karakter) dan mengonversinya ke karakter yang sesuai. Ini menggunakan InputBox fungsi untuk mendapatkan string digit, CInt untuk mengonversi string ke jenis Integer, dan ChrW untuk mengonversi angka ke jenis Char.

Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)

Contoh CDate

Contoh berikut menggunakan CDate fungsi untuk mengonversi string ke Date nilai. Secara umum, tanggal dan waktu pengodean keras sebagai string (seperti yang ditunjukkan dalam contoh ini) tidak disarankan. Gunakan literal tanggal dan literal waktu, seperti #Feb 12, 1969# dan #4:45:23 PM#, sebagai gantinya.

Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

Contoh CDbl

Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)

Contoh CDec

Contoh berikut menggunakan CDec fungsi untuk mengonversi nilai numerik menjadi Decimal.

Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)

Contoh CInt

Contoh berikut menggunakan CInt fungsi untuk mengonversi nilai menjadi Integer.

Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

Contoh CLng

Contoh berikut menggunakan CLng fungsi untuk mengonversi nilai menjadi Long.

Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)

Contoh CObj

Contoh berikut menggunakan CObj fungsi untuk mengonversi nilai numerik menjadi Object. Variabel itu Object sendiri hanya berisi penunjuk empat byte, yang menunjuk ke nilai yang Double ditetapkan untuk itu.

Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)

Contoh CSByte

Contoh berikut menggunakan CSByte fungsi untuk mengonversi nilai numerik menjadi SByte.

Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

Contoh CShort

Contoh berikut menggunakan CShort fungsi untuk mengonversi nilai numerik menjadi Short.

Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

Contoh CSng

Contoh berikut menggunakan CSng fungsi untuk mengonversi nilai menjadi Single.

Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)

Contoh CStr

Contoh berikut menggunakan CStr fungsi untuk mengonversi nilai numerik menjadi String.

Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)

Contoh berikut menggunakan CStr fungsi untuk mengonversi Date nilai menjadi String nilai.

Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)

CStr selalu merender Date nilai dalam format pendek standar untuk lokal saat ini, misalnya, "15/6/2003 4:35:47 PM". Namun, CStr menekan nilai netral 1/1/0001 untuk tanggal dan 00:00:00 untuk waktu tersebut.

Untuk detail selengkapnya tentang nilai yang dikembalikan oleh CStr, lihat Mengembalikan Nilai untuk Fungsi CStr.

Contoh CUInt

Contoh berikut menggunakan CUInt fungsi untuk mengonversi nilai numerik menjadi UInteger.

Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)

Contoh CULng

Contoh berikut menggunakan CULng fungsi untuk mengonversi nilai numerik menjadi ULong.

Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)

Contoh CUShort

Contoh berikut menggunakan CUShort fungsi untuk mengonversi nilai numerik menjadi UShort.

Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)

Lihat juga