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 Module1Sub 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 :
CDblA 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 = |
CIntA função CInt converte uma valor para Integer. Dim MyDouble As Double Dim MyInt As Integer MyDouble = 2345.5678 MyInt =
|
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: