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 HasValue para 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

  1. Declaramos int? idade = null; para criar um inteiro que pode ser nulo.
  2. Usamos idade.HasValue para verificar se a variável contém um valor.
  3. Se verdadeiro, imprimimos idade.Value, que acessa o número inteiro subjacente.
  4. Caso contrário, imprimimos a mensagem de valor não informado.
  5. Atribuímos 25 à mesma variável, tornando-a não nula.
  6. 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 .Value sem verificar: Console.WriteLine(idade.Value); quando idade é nulo lança InvalidOperationException. Sempre verifique com HasValue ou use GetValueOrDefault().
  • Confundir int? com int: int x = idade; gera erro de compilação. É necessário converter explicitamente: int x = idade.Value; ou idade ?? 0.
  • Esquecer o ? na declaração: int idade = null; não compila, pois int nã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