Junior
Co może zawierać delegat w C#?
sobes.tech AI
Odpowiedź od AI
Delegat w C# to typ reprezentujący odwołania do metod o określonej sygnaturze (typ zwracany i typy parametrów). Może zawierać:
- Odwołanie do metody statycznej:
// Metoda statyczna public static void StaticMethod(int x) { } // Delegat odwołujący się do metody statycznej MyDelegate d = StaticMethod; - Odwołanie do metody instancji:
// Klasa z metodą instancji public class MyClass { public void InstanceMethod(int y) { } } // Tworzenie instancji klasy MyClass obj = new MyClass(); // Delegat odwołujący się do metody instancji MyDelegate d = obj.InstanceMethod; - Lista wywołań (invocation list) wielu metod: Delegat w C# jest w rzeczywistości wieloadresowy. Może zawierać odwołania do kilku metod. Przy wywołaniu takiego delegata, wywoływane są wszystkie metody na liście w kolejności ich dodania.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Tworzenie wieloadresowego delegata MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Dodanie drugiej metody // Wywołanie delegata wywołuje obie metody multiDelegate(10);