Junior
Τι μπορεί να περιέχει ένας delegate σε C#;
sobes.tech AI
Απάντηση από AI
Ένας delegate στην C# είναι ένας τύπος που αντιπροσωπεύει αναφορές σε μεθόδους με μια συγκεκριμένη υπογραφή (τύπο επιστροφής και τύπους παραμέτρων). Μπορεί να περιέχει:
- Αναφορά σε μια στατική μέθοδο:
// Στατική μέθοδος public static void StaticMethod(int x) { } // Delegate που αναφέρεται σε μια στατική μέθοδο MyDelegate d = StaticMethod; - Αναφορά σε μια μέθοδο στιγμιότυπου (instance):
// Κλάση με μέθοδο στιγμιότυπου public class MyClass { public void InstanceMethod(int y) { } } // Δημιουργία στιγμιότυπου της κλάσης MyClass obj = new MyClass(); // Delegate που αναφέρεται σε μια μέθοδο στιγμιότυπου MyDelegate d = obj.InstanceMethod; - Λίστα κλήσεων (invocation list) πολλών μεθόδων: Ένας delegate στην C# είναι στην πραγματικότητα πολυκαναλικός. Μπορεί να περιέχει αναφορές σε πολλές μεθόδους. Όταν καλείται, καλούνται όλες οι μέθοδοι στη λίστα με τη σειρά που προστέθηκαν.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Δημιουργία πολυκαναλικού delegate MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Προσθήκη μιας δεύτερης μεθόδου // Κλήση του delegate καλεί και τις δύο μεθόδους multiDelegate(10);