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: