Fácil C#
Verificando idade nula
Enunciado
Crie um programa que declare uma variável int? idade = null. Use HasValue para verificar se ela tem valor. Se tiver, imprima "Idade: X"; senão, imprima "Idade não informada". Depois, atribua 25 e imprima novamente.
Requisitos
- Declarar
int? idade = null. - Usar
HasValuepara verificar se há valor. - Imprimir "Idade não informada" quando for nulo.
- Imprimir "Idade: 25" após atribuir 25.
Código inicial
using System;
class Program
{
static void Main()
{
// Seu código aqui
}
}
Saída esperada
Idade não informada
Idade: 25
Ver dica
Use if (idade.HasValue) e acesse idade.Value para obter o número.
Mostrar solução
using System;
class Program
{
static void Main()
{
int? idade = null; // tipo anulável
if (idade.HasValue)
{
Console.WriteLine($"Idade: {idade.Value}");
}
else
{
Console.WriteLine("Idade não informada");
}
idade = 25; // agora tem valor
if (idade.HasValue)
{
Console.WriteLine($"Idade: {idade.Value}");
}
else
{
Console.WriteLine("Idade não informada");
}
}
}
Passo a passo
- Declaramos
int? idade = null;para criar um inteiro que pode ser nulo. - Usamos
idade.HasValuepara verificar se a variável contém um valor. - Se verdadeiro, imprimimos
idade.Value, que acessa o número inteiro subjacente. - Caso contrário, imprimimos a mensagem de valor não informado.
- Atribuímos
25à mesma variável, tornando-a não nula. - Repetimos a verificação e a impressão, agora mostrando o número.
Por que funciona
int? é um Nullable<int>, uma estrutura que encapsula um valor int e um booleano indicando se há valor. HasValue retorna true quando há valor, e Value acessa esse valor. Isso evita erros ao tentar usar um inteiro que poderia ser nulo.
Erros comuns
- Acessar
.Valuesem verificar:Console.WriteLine(idade.Value);quandoidadeé nulo lançaInvalidOperationException. Sempre verifique comHasValueou useGetValueOrDefault(). - Confundir
int?comint:int x = idade;gera erro de compilação. É necessário converter explicitamente:int x = idade.Value;ouidade ?? 0. - Esquecer o
?na declaração:int idade = null;não compila, poisintnão aceita nulo.
Outra forma de resolver
Usando o operador de coalescência nula:
Console.WriteLine(idade.HasValue ? $"Idade: {idade.Value}" : "Idade não informada");
Ou simplesmente:
Console.WriteLine(idade is int valor ? $"Idade: {valor}" : "Idade não informada");
Saída esperada
Idade não informada
Idade: 25