Konversi Tipe Data


Konversi Tipe pada Visual Basic dapat dilakukan secara Implicit maupun Explicit, konversi secara Implicit dilakukan tanpa menggunakan fungsi bantu casting tertentu seperti  Cbool, Cbyte, Cchar, Cdate, Cdec, CDbl, Cint, CLng, Cobj, Cshort, CSng, CStr.


Contoh :
Module Test
   Sub Main()
      Dim intValue As Integer = 123
      Dim longValue As Long = intValue
      Console.WriteLine(intValue & " = " & longValue)
   End Sub
End Module
Sedangkan secara Explicit dilakukan dengan menggunakan fungsi bantu casting.

Module Test
   Sub Main()
      Dim longValue As Long = 134
      Dim intValue As Integer = CInt(longValue)
      Console.WriteLine(longValue & " = " & intValue)
   End Sub
End Module
Catatan :

Pada konversi secara Implicit, setting Option Strict akan mempengaruhi apakah konversi dari tipe yang lebih lebar ke tipe yang lebih sempit (Misalnya dari Integer 32 bit ke Short 16 bit) diperbolehkan oleh kompiler atau tidak.

Contoh berikut akan melakukan konversi dari Integer 32 bit ke Short 16 bit.

Option Strict On
Option Explicit On

Imports System
Public Module ModKali
   Sub Main()
       Dim i, j As Byte
       Dim a As Integer = 40000
       Dim b As Short
       b = a
       Console.WriteLine(b)
   End Sub
End Module

Yang kalau dikompilasi akan menghasilkan error sebagai berikut
Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322.573
Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.

D:\BELAJA~1\kali.vb(10) : error BC30512: Option Strict On disallows implicit conversions from 'Integer' to 'Short'.

       b = a
           ~

Hal tersebut dapat diperbaiki dengan menggunakan fungsi ToInt16 yang terdapat pada System.Convert yang artinya konversi memang dikehendaki oleh programmer

Contoh :

Option Strict On
Option Explicit On

Imports System
Public Module ModKali
   Sub Main()
       Dim i, j As Byte
       Dim a As Integer = 40000
       Dim b As Short
       b = System.Convert.ToInt16(a)
       Console.WriteLine(b)
   End Sub
End Module

Tetapi karena nilai 40000 tidak dapat ditampung oleh type data short, maka akan menghasilkan error pada saat runtime : System.OverflowException.


Konversi data secara Explicit dapat juga memanfaatkan fungsi bantu casting yang terdapat pada Objek System Convert sebagai berikut :

Function
Purpose
ToBoolean
Converts a value to a Boolean (True or False).
ToByte
Converts a value to an 8-bit Byte in the range 0 to 255.
ToChar
Converts a value to a 2-byte Unicode character.
ToDateTime
Converts a value to a DateTime object.
ToDecimal
Converts a value to a 12-byte Decimal.
ToDouble
Converts a value to an 8-byte Double.
ToInt16
Converts a value to a 2-byte Short.
ToInt32
Converts a value to a 4-byte Integer.
ToInt64
Converts a value to an 8-byte Integer.
ToSByte
Converts a value to an 8-bit signed value in the range –128 to 127.
ToSingle
Converts a value to a 4-byte Single.
ToString
Converts a value to its String representation.
ToUInt16
Converts a value to a 2-byte unsigned Short in the range 0 to 65,535.
ToUInt32
Converts a value to a 4-byte unsigned Integer in the range 0 to 4,294,967,295.
ToUInt64
Converts a value to an 8-byte unsigned long Integer in the range 0 to 18,446,744,073,709,551,615.

Catatan :

Berdasarkan uji coba yang dilakukan fungsi bantu konversi tipe seperti Cint, Cdate, CSng,CDbl, Cdec dan kadang-kadang fungsi bantu konversi memiliki unjuk kerja yang lebih baik seperti yang ditunjukan oleh tabel berikut ini adalah hasil konversi dengan Integer.Pars, Convert.ToInt32, dibandingkan dengan CInt

String
Integer.Parse
Convert.ToInt32
Cint
"12,500"
Error
Error
12500
"12"
12
12
12
"12500"
12500
12500
12500
"12500.00"
Error
Error
12500
"$12,500.00"
Error
Error
12500
"$12,500.10"
Error
Error
12500
"&HFF"
(VB syntax for the hex value FF) 255
Error
Error