Δώστε ένα παράδειγμα χρήσης των delegate στην C#.
sobes.tech AI
Απάντηση από AI
Οι delegates είναι τύπου ασφαλείς δείκτες σε μεθόδους. Επιτρέπουν τη μεταβίβαση μεθόδων ως ορίσματα, την ανάθεσή τους σε μεταβλητές και την κλήση τους μέσω αυτών. Οι delegates χρησιμοποιούνται ευρέως για τη δημιουργία γεγονότων, callbacks και ασύγχρονο προγραμματισμό.
Παράδειγμα χρήσης delegate:
-
Δήλωση delegate: Ορίζουμε την υπογραφή της μεθόδου στην οποία μπορεί να δείξει ο delegate.
public delegate int MyDelegate(int x, int y); -
Ορισμός μεθόδων: Δημιουργούμε μεθόδους με την υπογραφή που ταιριάζει με τον delegate.
public class Calculator { public int Add(int a, int b) { return a + b; } public int Subtract(int a, int b) { return a - b; } } -
Χρήση delegate: Δημιουργούμε ένα στιγμιότυπο delegate και του αναθέτουμε μια μέθοδο. Στη συνέχεια, καλούμε τη μέθοδο μέσω του delegate.
public class Program { public static void Main(string[] args) { Calculator calc = new Calculator(); // Δημιουργία στιγμιότυπου delegate και ανάθεση της μεθόδου Add MyDelegate del = new MyDelegate(calc.Add); // Κλήση της μεθόδου Add μέσω του delegate int result1 = del(10, 5); // result1 = 15 Console.WriteLine($"Αποτέλεσμα πρόσθεσης: {result1}"); // Αναθέτουμε το delegate στη μέθοδο Subtract del = calc.Subtract; // Κλήση της μεθόδου Subtract μέσω του delegate int result2 = del(10, 5); // result2 = 5 Console.WriteLine($"Αποτέλεσμα αφαίρεσης: {result2}"); } }
Σε αυτό το παράδειγμα, το MyDelegate μπορεί να δείξει σε οποιαδήποτε μέθοδο που δέχεται δύο ακέραια ορίσματα (int x, int y) και επιστρέφει έναν ακέραιο (int). Δημιουργούμε δύο στιγμιότυπα delegate (del), τους αναθέτουμε τις μεθόδους Add και Subtract, και στη συνέχεια χρησιμοποιούμε το delegate για να καλέσουμε αυτές τις μεθόδους.