VB .NET - Conversão entre tipos de variáveis (Casting)

Quando você define o tipo de uma variável esta especificando um intervalo de valores que a variável pode armazenar e um conjunto de operações que uma aplicação pode realizar com esta variável. Pode ocorrer a necessidade de atribuir um valor de um tipo de variável a uma variável de tipo diferente , ou seja , você pode precisar atribuir um valor do tipo inteiro para uma variável definida como do tipo Double ou vice-versa , e, neste caso estamos realizando uma conversão entre tipos de variáveis diferentes.(Geralmente conhecida como 'Casting')

Quando atribuímos um valor de um tipo 'menor' para um tipo 'maior' , como por exemplo , um valor do tipo Short para um tipo Integer o VB .NET realiza a operação de forma implícita pois o valor do tipo Short pode ser suportado sem problemas pelo tipo Integer.  Nestes casos temos uma conversão implícita ('implicit Cast')

Quando ocorre o inverso , ou seja , quando atribuímos um valor de tipo 'maior' para outra de tipo 'menor' , como por exemplo , um valor do tipo Integer para um do tipo Short o VB.NET vai truncar que não puder ser suportado pela variável de tipo 'menor'. No caso de Integer (representada no VB.NET por 32 bits) para Short (representada por 16 bits) serão descartados os valores acima de 16 bits.  Para evitar isto devemos forçar o VB .NET a realizar uma conversão entre os tipos , uma conversão explícita , também chamada de coersão (cast).

Para realizar uma conversão explícita ou coersão (cast) no VB .NET podemos usar uma das seguintes funções :

Funcão Propósito
ToBoolean  Converte um valor para Boolean (True ou False)
ToByte  Converte um valor para um Byte (8-bit) no intervalo de 0 a 255
ToChar  Converte um valor para um caracter Unicode (2-byte)
ToDateTime  Converte um valor para um objeto DateTime
ToDecimal  Converte um valor para um Decimal ( 12-byte )
ToDouble  Converte um valor para um Double ( 8 byte )
ToInt16  Converte um valor para um Short (2-byte)
ToInt32  Converte um valor para um Integer (4-byte)
ToInt64  Converte um valor para um Integer (8-byte)
ToSByte  Converte um valor para Valor com sinal (8-bit) no intervalo -128  a 127
ToSingle  Converte um valor para para um Single (4-byte)
ToString  Converte um valor para um String
ToUInt16  Converte um valor para um Short sem sinal (2-byte) no intervalo 0 a 65.535
ToUInt32  Converte um valor para um Integer sem sinal (2-byte) no intervalo 0 a 4.294.967.295
ToUInt64  Converte um valor para um long Integer sem sinal (8-byte) no intervalo 0 a 65.535

Para reduzir possíveis erros que podem ocorrer durante uma conversão entre um tipo de menor para um tipo maior , você pode fazer com que o compilador VB .NET não permita tais atribuições . Para fazer isto basta utilizar a seguinte declaração no seu código VB .NET : Option Strict on

Ao lado temos um exemplo onde a utilização da declaração - Option Strict On - não vai permitir as conversões as conversões implícitas.

 

No código :

Console.WriteLine(" O valor será truncado : " + FloatMenor1)

não é permitida a utilização do sinal + para concatenar o valor com a string.

 

 

 

Também podemos realizar a coerção (cast) usando duas palavras chave para coerção : Ctype e DirectCast que realização a operação para qualquer tipo de dados.(DirectCast é usada de forma especial nas conversões do tipo Object para qualquer outro tipo.)

No código acima podemos realizar a coerção usando CType da seguinte forma :

Module Module1

 Sub Main()

    Dim InteiroMaior As Integer = 10000

    Dim InteiroMenor As Short

    Dim FloatMaior As Double = 0.123456789

 

    Dim FloatMenor1 As Single

    Dim FloatMenor2 As Single

 

    InteiroMenor = CType(InteiroMaior, Short)

    FloatMenor1 = CType(FloatMaior, Single)

    FloatMenor2 = CType(FloatMaior, Single)

 

    Console.WriteLine(InteiroMenor)

    Console.WriteLine(" O valor será truncado : " & FloatMenor1)

 End Sub

End Module

Podemos também usar as funções de conversão :

 CBool | CByte | CChar | CDate | CDec | CDbl | CInt | CLng | CObj | CShort | CSng | CStr

A seguir temos dois exemplos de uso destas funções :

CDbl

 A função CDbl converte uma expressão para o tipo Double.

Dim MyDec As Decimal
Dim MyDouble As Double
MyDec = 234.456784D   
'Converte o resultado para Double
MyDouble = CDbl(MyDec * 8.2D * 0.01D) 

CInt

A  função CInt converte uma valor para Integer.

Dim MyDouble As Double
Dim MyInt As Integer
MyDouble = 2345.5678
MyInt = CInt(MyDouble)   ' MyInt recebe o valor 2346.

 

Aguarde em breve mais artigos sobre o tema.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti