A memória do seu computador é o local físico onde são colocados as instruções e dados que o microprocessador pode processar. Quando o seu computador esta em operação normal esta memória contém muitas partes do sistema operacional e alguns programas de aplicações e dados relacionados que estão sendo usados.
A memória da aplicação é porção da memória do computador alocado pelo sistema operacional para rodar a aplicação. Esta memória pode ser alocada em duas partes : stack e heap. |
|
Uma variável é um local na memória ao qual demos um nome. Você declara uma variável definindo um nome a um local na memória e definindo o tipo de dados que pode ser usado com a variável . Ex: Dim nome As String.
Um tipo de dados é um conjunto de valores que a variável pode assumir. Como exemplo de tipos de dados podemos citar : Integer , String , Boolean , Button , TextBox , Form , etc.
Dim intValor As Integer = declara uma variável chamada intValor do tipo Integer
No VB.NET os tipos de dados podem ser classificados em tipos de dados por valor e tipos de dados por referência. A seguir alguns tipos de dados e sua classificação:
Tipos de dados por Valor = Byte , Integer , Single , Double , Boolean , Char , Struct , Enum
Tipos de dados por referência = Array , Button , Form , DataSet , Font
A categoria do tipo de dados determina como ele será alocado na memória.
Tipos de dados por valor
Uma variável declarada como um tipo de dados por valor é estruturada na memória para conter um valor diretamente. Vejamos :
- Um Integer é um tipo de dados por valor
Dim intValor As Integer
intValor = 1
Depois de rodar o código acima o resultado é uma variável na memória chamada intValor que contém o valor 1 diretamente |
|
Tipos de dados por referência
Uma variável declara como um tipo de dados por referência é estruturada para conter uma referência para um objeto atual na HEAP. Uma referência é um endereço de memória onde um objeto existe na Heap.
- Um Button é um tipo de dados por referência
Dim mButton As Button
Depois de rodar o código acima o resultado é uma variável na memória chamada mButton que contém uma referência para um objeto button na heap. Neste momento o valor da variável mButton é null. |
|
mButton = New Button()
A linha de
código acima , depois de executada , fará com que a variável mButton
contenha uma referência a um objeto Button na Heap. A referência é um valor inteiro que indica o endereço onde o objeto Button começa na heap. |
|
Agora acho que já deu para você entender o que esta ocorrendo quando temos a mensagem de erro :
An unhandled exception of "System.NullReferenceException" occurred...
Este erro ocorre quando uma tentativa e feita para usar uma variável de referência que foi declarada mas não possui ainda uma referência para o objeto atual. A variável contém uma referência NULL . Para provocar o erro basta executar o código abaixo:
1 Dim mButton As
Button
2 mButton.ForeColor = Color.White
- A primeira linha de código declara a variável
mButton como um tipo por referência que pode conter uma referência para um
objeto Button.
- A segunda linha tenta usar mButton antes que uma referência seja atribuída ao
objeto button. O que teremos na memória é o seguinte :
O interpretador não pode encontrar um objeto Button na variável mButton e então dispara a exceção. Existe um NULL armazenado na variável mButton e não uma referência a um objeto button na Heap. |
Para corrigir o problema basta declarar : mButton = new Button() antes de tentar alterar a cor do botão.
Até o próximo artigo VB.NET!!!
José Carlos Macoratti