NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
Objetivos:
Este parte do tutorial discute o .NET Framework e o Common Language Runtime. Também fornece introdução a sintaxe de classes, estruturas e declarações de métodos.
Pré-requisitos:
Nenhum.
Quando você começa a escrever uma aplicação, automaticamente você começa a fazer referência a .NET Framework Base Class Library. Você referencia ela para que a sua aplicação esteja apta para instanciar os tipos da .NET Framework Base Class Library.
Visual Basic .NET
Dim myInteger As Integer
Visual C#
int myInteger;
Estas linhas dizem ao Common Language Runtime para alocar a quantidade de memória apropriada para uma variável do tipo inteiro. Embora estas linhas criem a variável elas não definem um valor para ela. Você pode definir um valor usando o operador de atribuição como mostrado a seguir:
Visual Basic .NET
myInteger = 42
Visual C#
myInteger = 42;
Você também pode optar por definir um valor para a variável no momento de sua criação como mostrado abaixo:
Visual Basic .NET
Dim myInteger As Integer = 42
Visual C#
Int myInteger = 42;
Nota
Embora a declaração e a inicialização em uma única linha seja desencorajada no Visual Basic 6 devido a perda de performance a declaração e atribuição em uma única linha no Visual Basic .NET não gera problema de perda de performance.
Tipos por referência
Criar a instância de um tipo é um processo de dois passos. O primeiro passo é declarar a o tipo da variável, isto reservará a quantidade de memória necessária para a criação do objeto. A seguir mostramos como declarar um objeto:
Visual Basic .NET
Dim myForm As System.Windows.Forms.Form
Visual C#
System.Windows.Forms.Form myForm;
As linhas dizem ao runtime para reservar memória suficiente para armazenar uma variável do tipo Form e chama esta variável de myForm. Neste momento o objeto Form ainda não foi criado na memória. O segundo passo é instanciar o objeto e é mostrado nas linhas a seguir:
Visual Basic .NET
myForm = New System.Windows.Forms.Form()
Visual C#
myForm = new System.Windows.Forms.Form();
As linhas acima chamam o método construtor do tipo System.Windows.Forms.Form definido com a palavra chave New (new). Este construtor é um método especial que é chamado somente no início da vida do objeto. Ele contém qualquer código que seja necessário para definir o ambiente ou os valores para que o objeto possa trabalhar. Se algum parâmetro por requisitado pelo construtor ele deve vir no final da linha entre parentêses. O exemplo a seguir mostra a declaração e a instanciação de uma classe hipotética chamada Widget que requer um parâmetro do tipo String.
Visual Basic .NET
Dim myWidget As Widget
myWidget = New Widget(“Esta string é requerida pelo construtor”)
Visual C#
Widget myWidget;
myWidget = new Widget(“Esta string é requerida pelo construtor”);
Se desejar pode combinar a declaração e a instanciação em um única linha de comando. Ao declarar e instanciar um objeto na mesma linha você reserva a memória para ser utilizada pelo objeto e imediatamente cria o objeto. Embora isto significasse um custo alto de performance em versões anteriores do Visual Basic para o Visual Basic .NET e para o Visual C# isto não implica em perda de performance. Os textos a seguir exemplificam o que falamos:
Visual Basic .NET
Dim myForm As New System.Windows.Forms.Form()
Visual C#
System.Windows.Forms.Form myForm = new System.Windows.Forms.Form();
Não importa se a variável vai armazenar valores de tipos de valor ou de tipos por referência. Ela deve ser inicializada sempre. Para campos de classes e estruturas no Visual Basic .NET os tipos são inicializados com valores padrão na declaração. Tipos numéricos (como Inteiros) e pontos flutuantes recebem zero como valor padrão. Variáveis boleanas recebem o valor False como padrão e tipos por referência recem nulo como padrão.
No C# as variáveis por referência recebem nulo como padrão. È recomendado que você não trabalhe com estes valores padrão. Estas variáveis não devem ser utilizadas antes de se definir um valor pra ela.
Usando tipos por valor e tipos por referência
Uma variável que armazena um tipo por valor contém todos os dados que ela representa. Uma variável que armazena um tipo por referência contém apenas o endereço do objeto que ela representa. Diferenciar isto é muito importante. Considere o exemplo abaixo:
Visual Basic .NET
Dim x,y As Integer
x = 15
y = x
x = 30
‘ Qual é o valor de y ?
Visual C#
int x,y;
x = 15;
y = x;
x = 30;
// Qual é o valor de y ?
Neste exemplo duas variáveis inteiras chamadas x e y são criadas. A x é atribuído o valor 15 a y é atribuído o valor de x. Em seguida x recebe o valor 30 e uma questão é colocada: Qual é o valor de y ? A resposta para esta pergunta parece óbvia y = 15 pois x e y são variáveis distintas e mudar o valor de uma não altera o valor da outra. Quando a linha y = x é encontrada o valor de x é copiado para y e não é criada nenhuma conexão entre x e y.
Esta situação muda quando a variável é do tipo por referência. Vamos reconsiderar o exemplo acima usando um tipo por referência (Form).
Visual Basic .NET
Dim x,y As System.Windows.Forms.Form
x = New System.Windows.Forms.Form()
x.Text = “Este é o formulário 1”
y = x
x.Text = “Este é o formulário 2”
‘ Qual o valor retornado pela propriedade y.Text ?
Visual C#
System.Windows.Forms.Form x,y;
x = new System.Windows.Forms.Form();
x.Text = “Este é o formulário 1”;
y = x;
y.Text = “Este é o formulário 2.”;
// Qual o valor retornado pela propriedade y.Text ?
Qual o valor da propriedade y.Text ? Neste momento a resposta não parece óbvia. Como System.Windows.Forms.Form é um tipo por referência a variável x não contém um Form e sim um ponteiro para o Form. Quando a linha y = x é encontrada o runtime copia a referência da variável x para a variável y. Então neste momento a variável x e a y apontam para a mesma instância do Form. Como as duas variáveis referenciama mesma instância de um objeto elas retornam o mesmo valor para a propriedade do objeto. Então x e y retornam “Este é o formulário 2.”.
Os comandos Imports e Using
Até este momento sempre que você precisou acessar uma classe da .NET Framework Class Library foi necessário você especificar o nome todo da classe. Por exemplo:
System.Windows.Forms.Form
Isto é chamado de nome completamente qualificado (fully-qualified name) isto significa se referenciar a classe através de todo o seu namespace. Você pode fazer seu ambiente de desenvolvimento suportar vários namespaces usando os comandos Imports (Visual Basic .NET) ou using (Visual C#). Esta técnica permite que você se refira a classe usando apenas o nome dela e não o namespace completo. Então você pode se referir a classe System.Windows.Forms.Form como Form. No Visual Basic .NET o comando Imports deve ser colocado no topo do código precedendo todo e qualquer comando, exceto o Option. No Visual C# o comando using precisa ocorrer antes de qualquer outro elemento como class ou struct. O exemplo abaixo demostra o uso destes comandos:
Visual Basic .NET
Imports System.Windows.Forms.Form
Visual C#
Using System.Windows.Forms.Form;
Se dois tipos tem um mesmo nome você deve usar o nome completo dele para evitar o conflito de nomes. Então se você vai usar o MyNameSpaceOne e o MyNameSpaceTwo ecada um contém um classe Widget você deve referenciar a classe utilizando o nome completo dela: MyNameSpaceOne.Widget ou MyNameSpaceTwo.Widget para ter certeza do resultado.
No C# você pode resolver este conflito criando aliases. Um alias permite que você escolha um nome para se referenciar a classe. Você pode utilizar um alias usando o comando using. Conforme exemplo abaixo:
Visual C#
using myAlias = MyNameSpaceTwo.Widget;
Depois de implementar um alias você pode usá-lo representando a classe que ele referencia. Conforme exemplo abaixo:
Visual C#
// A partir de agora você vai se referir a MyNameSpaceTwo como myAlias.
// As linhas abaixo produzem o mesmo resulytado
MyNameSpaceTwo.Widget anotherWidget = new MyNameSpaceTwo.Widget();
myAlias anotherWidget = new myAlias();
Você não pode executar esta técnica no Visual Basic .NET.
Referenciando a bliblotecas externas
Você pode usar bibliotecas de classes que não fazem parte do .NET Framework Base Class Library como classes desenvolvidas por terceiros. Para acessar estas classes você precisa referenciá-las.
Para criar uma referência a uma biblioteca externa
1. No Solution Explorer clique aponte para o nó References do seu projeto
2. No pop-up menu selecione Add References. A caixa de diálogo Add Reference será exibida
3. Selecione a aba apropriada para a biblioteca que deseja referenciar. Bibliotecas .NET estão disponíveis na aba .NET. Bibliotecas COM estão disponíveis na aba COM e projetos locais do Visual Studio .NET estão disponíveis na aba Projects.
4. Localize a biblioteca que deseja referenciar , aponte o ponteiro do mouse para ela e dê um duplo clique para adicioná-la a caixa de componentes selecionados. Clique no botão OK para confirmar sua escolha.