Junior
O que pode conter um delegado em C#?
sobes.tech IA
Resposta da IA
Um delegado em C# é um tipo que representa referências a métodos com uma assinatura específica (tipo de retorno e tipos de parâmetros). Pode conter:
- Referência a um método estático:
// Método estático public static void StaticMethod(int x) { } // Delegado referenciando um método estático MyDelegate d = StaticMethod; - Referência a um método de instância:
// Classe com método de instância public class MyClass { public void InstanceMethod(int y) { } } // Criação de uma instância da classe MyClass obj = new MyClass(); // Delegado referenciando um método de instância MyDelegate d = obj.InstanceMethod; - Lista de invocação (invocation list) de vários métodos: Um delegado em C# é na verdade multicanal. Pode conter referências a vários métodos. Quando chamado, todos os métodos na lista são invocados na ordem de adição.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Criação de um delegado multicanal MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Adicionar um segundo método // Chamar o delegado invoca ambos os métodos multiDelegate(10);