Exercícios de C#

Modelo publicador e assinante de eventos em C#

Nesta lição, você vai avisar os objetos inscritos sempre que o status de um pedido mudar, usando eventos.

Introdução

Os eventos permitem que quem está de fora se inscreva para receber avisos, mas só a classe dona do evento tem permissão para dispará-lo. É assim que se implementa o modelo publicador e assinante de forma segura em C#.

A classe Order declara o evento StatusChanged com o tipo EventHandler<string>, ou seja, ele carrega uma string com o novo status. Em Main, uma lambda se inscreve para imprimir o status na tela. Quando Update("Shipped") é chamado, o operador ?. só dispara o evento se houver inscritos, então o programa imprime Shipped.

Exemplo de C# executável

C#
Rodar código →
Program.cs
using System;
class Order
{
    public event EventHandler<string>? StatusChanged;
    public void Update(string status) => StatusChanged?.Invoke(this, status);
}
class Program
{
    static void Main()
    {
        var order = new Order();
        order.StatusChanged += (_, status) => Console.WriteLine(status);
        order.Update("Shipped");
    }
}
Resultado da execução
Shipped

Pratique com o depurador

Coloque um breakpoint em uma atribuição ou condição importante, clique em Debug e veja os valores das variáveis locais antes de passar para a próxima linha.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios