VB .NET - Declaração de variáveis o que mudou ?


Muitos programadores não se preocupam com noções teóricas ou aspectos técnicos sobre a linguagem que utilizam.

O Visual Basic por ser uma ferramenta RAD , estimula muito o que chamamos programação por tentativa e erro.

O que importa é ver o sistema funcionando . Em nome desta funcionalidade verdadeiras barbaridades são cometidas em Visual Basic.

Vou abordar o que mudou com relação a declaração de variáveis no VB.NET . Posso adiantar que as mudanças foram para melhor em todos os aspectos. Sem contar que o VB.NET agora é uma linguagem mais bem 'tipada' e isto vai evitar muitas 'loucuras' dantes cometidas ; se você não entender o que está acontecendo não vai conseguir fazer rodar programas muito simples feitos na versão .NET.

1- Múltiplas declarações em uma única linha de código

Nas versões anteriores do Visual Basic , quando tínhamos múltiplas declarações aparecendo na mesma linha , para definir o tipo correto de dados de cada variável deveríamos usar a cláusula AS explicitamente na frente de cada variável , ou seja , se você fizer uma declaração assim : Dim a , b c as String .

O que teria ? Vejamos:

Declaração Resultado no Visual Basic 6.0 Resultado no Visual Basic .NET
Dim a , b c as String a e b será do tipo Variant e c será do tipo String a, b e c serão do tipo String

Para obter o mesmo efeito no VB 6.0 teríamos que fazer a declaração assim :

Dim a AS String , b AS String , c AS String

No VB.NET podemos fazer assim :

Dim a , b , c AS String

2- O tipo de dados padrão

No VB 6.0 se você declarar uma variável sem definir explicitamente seu tipo (sem usar a cláusula AS) o tipo padrão assumido é o tipo Variant. Assim na declaração :

   Dim a          
 A variável a será do tipo Variant => 
   Dim a AS Variant   

no VB.NET a mesma declaração tornará a variável a do tipo Object . Object é o valor padrão para variáveis no VB.NET.

   Dim a          
 A variável a será do tipo Object => 
  Dim a As Object

3- O escopo das variáveis

O Visual Basic .NET trouxe um novo escopo para as variáveis: o escopo a nível de blocos. Assim no VB.NET quando você declara uma variável dentro de um bloco de código : FOR...NEXT , DO WHILE , IF..THEN , SELECT...CASE , TRY ... CATCH, etc... ela deixa de existir fora do bloco de código onde foi declarada.

Assim no VB.NET o código abaixo :

For i = 0 to 10
Dim nome as String
nome = "Carlos"
Next i
nome=""
A variável nome será visível somente dentro do bloco de código definido por FOR/NEXT

Se você tentar usar a variável nome fora do bloco vai obter a seguinte mensagem de erro:

Name 'nome' is not declared.

No VB 6.0 usando a mesma declaração , a variável nome poderia ser usada dentro da função sem problemas.

No VB.NET

4- Declaração de variáveis e conversão entre tipos.

No VB 6.0 quando a fazer a declaração abaixo , você terá :

   Dim a , b as Long          
  a será do tipo Variant e b do tipo Long 

Se você fizer a seguinte atribuição : a = "Copa 2002" não vai obter nenhuma mensagem de erro.

No VB.NET a mesma declaração irá resultar em

   Dim a , b as Integer         
  a será do tipo Integer e b do tipo Integer 

Se você fizer a seguinte atribuição : a = "Copa 2002" vai obter uma mensagem de erro.

Se a opção Option Strict estiver definida como ON a mensagem será :

Option Strict disallows implicit conversions from String to Integer.

Se a opção Option Strict estiver definida como OFF a mensagem será :

An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll.
Additional information: Cast from String ("Hello world") to Integer is not valid.

Sabe porquê ? Porque a variável a é do tipo de dados Integer e o valor literal "Copa 2002" é considerado do tipo String e isto resultará em tipos incompatíveis de dados ,ou seja , você não poderá converter String para Integer.

Por outro lado se Option Strict estiver OFF você pode converter entre tipos de dados implicitamente. Veja :

Dim a , b 
a = " Copa "
b = 100
a = 2002
  Quando você não declara as variáveis explicitamente ( não usa a cláusula AS)

Se Option Strict for OFF os tipos dados podem ser convertidos

na atribuição das variáveis.

5- Inicializando variáveis

No VB.NET podemos inicializar uma variável da seguinte forma :

Dim N as Integer = 7 ou ainda :

Dim X as integer = 1 , Y AS String = "COPA" , Z AS Integer = 2002

Todas estas formas são válidas e não são suportadas pelo Visual Basic 6.

Mas você não pode inicializar mais de uma variável , assim : Dim X, Y as Integer = 10

Resumindo : para inicializar uma variável temos que declará-la usando o tipo e a cláusula AS.

Bem , vamos parar por aqui, continuaremos em um outro artigo. Até la´...

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