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){ }
.png)
0 comentários: