Junior
Ce poate conține un delegat în C#?
sobes.tech AI
Răspuns de la AI
Un delegat în C# este un tip care reprezintă referințe la metode cu o semnătură specifică (tipul de returnare și tipurile de parametri). Poate conține:
- Referință la o metodă statică:
// Metodă statică public static void StaticMethod(int x) { } // Delegat care face referire la o metodă statică MyDelegate d = StaticMethod; - Referință la o metodă de instanță:
// Clasă cu metodă de instanță public class MyClass { public void InstanceMethod(int y) { } } // Crearea unei instanțe a clasei MyClass obj = new MyClass(); // Delegat care face referire la o metodă de instanță MyDelegate d = obj.InstanceMethod; - Lista de apeluri (invocation list) a mai multor metode: Un delegat în C# este de fapt multicanal. Poate conține referințe la mai multe metode. La apelarea unui astfel de delegat, sunt apelate toate metodele din listă în ordinea adăugării.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Crearea unui delegat multicanal MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Adăugarea unei a doua metode // Apelarea delegatului invocă ambele metode multiDelegate(10);