Explorando delegados e lambdas
Entenda delegados e expressões lambda para criar código conciso e flexível
Explorando delegados e lambdas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 4 de 5. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 5 aulas no total.
Usando expressões lambda com delegate
Usando expressões lambda com delegate
As expressões lambda podem ser atribuídas diretamente a objetos delegate. Exemplo:

O que é um delegate?
O que é um delegate?
Um delegate é um tipo que armazena referências a métodos com uma assinatura específica. Os objetos delegate permitem que métodos sejam passados como parâmetros ou atribuídos dinamicamente.
Exemplo: os objetos delegate são frequentemente usados para retornos de chamada e tratamento de eventos.
Definindo e usando objetos delegate
Definindo e usando objetos delegate
Você pode definir um delegate usando a palavra-chave delegate. Exemplo:
Ponto principal: os objetos delegate oferecem uma forma de encapsular métodos.
using System;
class Program {
// Define a delegate
public delegate void PrintDelegate(string message);
static void Main() {
PrintDelegate print = PrintMessage; // Assign method to delegate
print("Hello, Delegates!"); // Call the method via the delegate
}
static void PrintMessage(string message) {
Console.WriteLine(message);
}
}
O que é uma expressão lambda?
O que é uma expressão lambda?
Uma expressão lambda é uma forma concisa de representar um método anônimo em C#. Ela usa a sintaxe (parameters) => expression.
Exemplo: (x, y) => x + y representa um método que soma dois números.
Dica: as expressões lambda são frequentemente usadas com LINQ e objetos delegate para obter concisão e clareza.
Expressões lambda com delegate
Usando expressões lambda com delegate
As expressões lambda podem ser atribuídas diretamente a objetos delegate. Exemplo:
Ponto principal: as expressões lambda tornam seu código mais conciso e legível.
using System;
class Program {
public delegate int MathOperation(int x, int y);
static void Main() {
MathOperation add = (x, y) => x + y; // Lambda for addition
Console.WriteLine("Result: " + add(10, 20)); // Outputs: Result: 30
}
}
Delegates multicast
Delegates multicast
Um único delegate pode referenciar vários métodos. Todos os métodos são invocados em ordem. Exemplo:
using System;
class Program {
public delegate void Notify(string message);
static void Main() {
Notify notify = PrintMessage;
notify += LogMessage;
notify("Hello, Multicast Delegates!"); // Calls both methods
}
static void PrintMessage(string message) {
Console.WriteLine("Print: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
}
Desafio prático
Desafio prático
Crie um programa que use um delegate StringOperation para realizar manipulações de texto, como converter para maiúsculas e inverter uma string. Exemplo:
using System;
class Program {
public delegate string StringOperation(string input);
static void Main() {
StringOperation operations = ToUpperCase;
operations += ReverseString;
string input = "Hello";
foreach (var operation in operations.GetInvocationList()) {
Console.WriteLine(((StringOperation)operation)(input));
}
}
static string ToUpperCase(string input) {
return input.ToUpper();
}
static string ReverseString(string input) {
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
}
Práticas recomendadas para delegates e expressões lambda
Práticas recomendadas para delegates e expressões lambda
Veja algumas práticas recomendadas:
- Use objetos delegate para implementar retornos de chamada e tratamento de eventos.
- Prefira expressões lambda para obter código conciso e claro.
- Combine expressões lambda com LINQ para processar dados com eficiência.
- Evite expressões lambda excessivamente complexas para manter a legibilidade.
Dica: use nomes de parâmetros significativos nas expressões lambda para melhorar a clareza do código.
Ótimo trabalho!
Ótimo trabalho!
Parabéns! Você aprendeu a usar delegates e expressões lambda para escrever código funcional e orientado a eventos em C#. Na próxima lição, exploraremos a reflexão em C#, um recurso avançado para análise de tipos em tempo de execução. Vamos continuar programando!

Perguntas Frequentes
A aula “Explorando delegados e lambdas” é grátis?
Sim — o texto completo de “Explorando delegados e lambdas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 5 aulas no total.
O que vou aprender em “Explorando delegados e lambdas”?
Entenda delegados e expressões lambda para criar código conciso e flexível Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 5.
Quanto tempo leva a aula “Explorando delegados e lambdas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Genéricos em C#
- Async e Await: trabalhando com código assíncrono
- Entendendo encadeamentos e tarefas
- Explorando delegados e lambdas
- Entendendo a reflexão em C#