Come convertire i dati in Visual Basic
Le conversioni esplicite
In Visual Basic .NET per convertire un valore da un tipo di dato a un altro, uso le seguenti funzioni di conversione esplicita:
CBool(x) | trasforma in in booleano |
CByte(x) | trasforma in byte |
CChar | trasforma in carattere |
CDate | trasforma in data |
CDec | trasforma in decimale |
CDbl | trasforma in double |
CInt(x) | trasforma in intero |
CLng(x) | trasforma in long |
CObj(x) | trasforma in oggetto |
CSByte(x) | |
CShort(x) | |
CSng(x) | |
CStr(x) | trasforma un dato in stringa |
CType(x) | |
CUInt(x) | |
CULng(x) | |
CUShort(x) | |
DirectCast(x) |
Le conversioni esplicite non escludono il rischio di perdita di dati.
Le conversioni implicite
Nel caso del casting con fra tipi di valore è anche possibile la conversione implicita tra i tipi di dati.
Nota. Il casting è la conversione tra tipi affini. Ad esempio, un intero in long.
Una conversione implicita avviene senza alcun rischio di perdita di informazione, perché i tipi di dati sono affini.
Esempio
Un valore intero può essere trasformato in long senza alcuna perdita di informazione
Dim x As Integer = 5
Dim y As Long
y = x
CType e DirectCast
Le istruzioni CType e DirectCast utilizzano come parametri sia il tipo di dato in origine che di di destinazione
C'è però una differenza tra le due istruzioni.
L'istruzione Ctype si applica sia sulle variabili di calore che di riferimento.
Dim x As Integer
x = CType("3.14", Integer)
L'istruzione DirectCast si applica solo sulle variabili di riferimento.
Dim x As Tipopersonalizzato
x = DirectCast(Obj, Tipopersonalizzato)
Quando si tratta di variabili di riferimento tra loro compatibili è più efficiente l'uso di DirectCast perché CType tenterebbe comunque la conversione.
Inoltre, l'uso di CType non esclude l'insorgere di errori durante l'esecuzione se i tipi di dati non sono compatibili.
E così via.