Como atribuir null para tipos como lnt, bool, char...

Muitas vezes no dia a dia um boolean pode ser não só true e false, mas também null. Além do boolean os seguintes tipos não aceitam null diretamente:

  • Char
  • Byte
  • sbyte
  • ushort
  • Int
  • Uint
  • Long
  • ulong
  • Float
  • Double
  • Decimal
  • Bool
  • struct

A solução para esse problema é o uso da classe System.Nullable. Existem duas formas de instanciar uma variável usando essa classe, como demostrado abaixo:

    System.Nullable<int> foo = null;

    int? bar = null;

Uma vez declarado a variável ela terá duas propriedades a mais:

  • Value: retorna o conteúdo armazenado na variável. Caso o valor armazenado seja null será lançado a seguinte exception: System.InvalidOperationException.
  • HasValue: retorna false caso o valor armazenado seja null, e true se o valor não for null.

Quando usar essa técnica tome sempre cuidado em verificar se o valor da variável é null, ou em tratar as possíveis exceções, conforme abaixo:

    //Verificando antes
    System.Nullable<int> foo = null;
    if (foo.HasValue)
    {
        foo = foo.Value * 10;
    }

    //Tratando exception
    System.Nullable<int> bar = null;
    try
    {
        bar = bar.Value * 10;
    }
    catch (System.InvalidOperationException){ }


0 comentários: