Para um perfeito entendimento e uso de variáveis, é necessário perceber uma sutil diferença entre declaração e definição de variáveis. Vejamos o significado de cada uma nas linhas seguintes.

A declaração de uma variável informa o compilador sobre seu nome e seu tipo. Veja uma linha de código que declara uma variável chamada idade:

int idade;
A definição ou inicialização de variáveis ocorre quando as células de memória necessárias ao armazenamento destas variáveis são alocadas. Veja, por exemplo, um trecho de código que declara uma variável e em seguida a inicializa:

int idade;
idade = 20;

Dependendo do contexto em que uma variável é declarada, o compilador a inicializa automaticamente com um valor padrão para o tipo de dados. Porém, variáveis locais nunca são inicializadas automaticamente. Uma variável local é uma variável declarada dentro de métodos e alguns outros blocos de código. Para demonstrar como o compilador C# se comporta quando uma variável local é declarada, mas ainda não definida (inicializada), vamos escrever o seguinte aplicativo:

Código:

using System;

class Variaveis
{
    static void Main()
    {
      int idade;

      Console.WriteLine("Idade: {0}", idade);
    }
}


Este código está disponível no arquivo Variaveis2.cs. Experimente compila-lo e verá a seguinte mensagem de erro:

Variaveis2.cs(9,37): error CS0165: Use of unassigned local variable 'idade'

Esta mensagem de erro ocorreu porque a variavel idade foi declarada dentro do método Main do aplicativo e, portanto, é uma variável local. Variáveis locais devem sempre ser inicializadas antes de serem usadas.

Observação
C# permite que a declaração e definição de uma variável sejam feitas em apenas uma linha. Assim, é perfeitamente legal escrever o trecho de código seguinte:

int idade;
idade = 20;

em uma forma mais reduzida:

int idade = 20;


Variaveis2.cs