Skip to main content

Checked e Unchecked

  • Checked e Unchecked

Exemplo

Este exemplo mostra como checked pode ser usado para lançar uma exceção quando ocorre um estouro aritmético, enquanto unchecked ignora o estouro.

using System;

class Program
{
static void Main()
{
// Exemplo de uso de checked
try
{
int maxInt = int.MaxValue;
Console.WriteLine("Valor máximo de int: " + maxInt);

// Esta operação irá causar um estouro e lançar uma exceção
int resultChecked = checked(maxInt + 1);
Console.WriteLine("Resultado com checked: " + resultChecked);
}
catch (OverflowException e)
{
Console.WriteLine("Exceção capturada com checked: " + e.Message);
}

// Exemplo de uso de unchecked
try
{
int maxInt = int.MaxValue;
Console.WriteLine("Valor máximo de int: " + maxInt);

// Esta operação irá causar um estouro, mas não lançará uma exceção
int resultUnchecked = unchecked(maxInt + 1);
Console.WriteLine("Resultado com unchecked: " + resultUnchecked);
}
catch (OverflowException e)
{
// Não será capturada nenhuma exceção aqui
Console.WriteLine("Exceção capturada com unchecked: " + e.Message);
}

// Exemplo adicional de bloco checked
try
{
int a = 2147483640;
int b = 10;

checked
{
// Esta operação irá causar um estouro e lançar uma exceção
int result = a + b;
Console.WriteLine("Resultado dentro do bloco checked: " + result);
}
}
catch (OverflowException e)
{
Console.WriteLine("Exceção capturada no bloco checked: " + e.Message);
}

// Exemplo adicional de bloco unchecked
{
int a = 2147483640;
int b = 10;

unchecked
{
// Esta operação irá causar um estouro, mas não lançará uma exceção
int result = a + b;
Console.WriteLine("Resultado dentro do bloco unchecked: " + result);
}
}
}
}

Explicação

  • checked: Utilizado para verificar estouro em operações aritméticas. Se um estouro ocorrer, uma OverflowException é lançada. No exemplo, checked(maxInt + 1) lança uma exceção porque maxInt é o valor máximo que um int pode ter, e adicionar 1 a ele causa um estouro.

  • unchecked: Utilizado para ignorar estouro em operações aritméticas. Se um estouro ocorrer, ele é ignorado e o valor resultante é truncado. No exemplo, unchecked(maxInt + 1) resulta em um valor truncado sem lançar uma exceção.

  • Blocos checked e unchecked: Além do uso em expressões, você também pode usar checked e unchecked para definir blocos de código onde todas as operações aritméticas dentro do bloco são verificadas ou ignoradas para estouros, respectivamente.

Este exemplo ilustra como controlar a verificação de estouro em C# para evitar exceções ou lidar com cálculos aritméticos que podem exceder os limites dos tipos numéricos.