Προγραμματισμός

Πώς να συνεργαστείτε με εκπροσώπους στο C #

Ένας πληρεξούσιος είναι ένας δείκτης λειτουργίας ασφαλούς τύπου που μπορεί να αναφέρει μια μέθοδο που έχει την ίδια υπογραφή με αυτήν του πληρεξούσιου. Μπορείτε να εκμεταλλευτείτε τους εκπροσώπους στο C # για να εφαρμόσετε συμβάντα και μεθόδους επανάκλησης. Ένας πληρεξούσιος πολλαπλής διανομής είναι αυτός που μπορεί να δείξει μία ή περισσότερες μεθόδους που έχουν πανομοιότυπες υπογραφές.

Κατανόηση των εκπροσώπων στο C #

Ουσιαστικά, ένας πληρεξούσιος κρατά μια αναφορά σε μια μέθοδο και επίσης στο αντικείμενο στόχο στο οποίο πρέπει να κληθεί η μέθοδος. Οι πληρεξούσιοι στο C # είναι παρόμοιοι με τους δείκτες λειτουργίας στο C ++, αλλά οι C # πληρεξούσιοι είναι ασφαλείς τύπου. Μπορείτε να μεταβιβάσετε μεθόδους ως παραμέτρους σε έναν πληρεξούσιο για να επιτρέψετε στον εκπρόσωπο να δείξει τη μέθοδο. Οι πληρεξούσιοι χρησιμοποιούνται για τον καθορισμό μεθόδων επανάκλησης και την εφαρμογή χειρισμού συμβάντων και δηλώνονται χρησιμοποιώντας τη λέξη-κλειδί «πληρεξούσιος». Μπορείτε να δηλώσετε έναν πληρεξούσιο που μπορεί να εμφανιστεί μόνος του ή ακόμη και ένθετο μέσα σε μια τάξη.

Υπάρχουν τρία βήματα στη χρήση των εκπροσώπων. Σε αυτά περιλαμβάνονται η δήλωση, η θεσμοθέτηση και η επίκληση.

Η υπογραφή ενός αντιπροσώπου μοιάζει με αυτό:

Αναγνωριστικό τύπου αποτελέσματος ανάθεσης ([παράμετροι])

Η ακόλουθη δήλωση δείχνει πώς μπορείτε να δηλώσετε έναν εκπρόσωπο.

το δημόσιο πληρεξούσιο ακυρώνει το MyDelegate (κείμενο συμβολοσειράς).

Όπως μπορείτε να δείτε στην παραπάνω δήλωση, το όνομα του πληρεξούσιου είναι "MyDelegate", έχει έναν τύπο επιστροφής "άκυρο" και δέχεται ένα αντικείμενο συμβολοσειράς ως επιχείρημα. Αυτό σημαίνει ότι ο εκπρόσωπος MyDelegate μπορεί να δείξει μια μέθοδο που έχει την ίδια υπογραφή. Ωστόσο, αυτή είναι απλώς μια δήλωση - πρέπει να δημιουργήσετε έναν αντιπρόσωπο για να μπορέσετε να τον χρησιμοποιήσετε. Η δήλωση που δίνεται στη συνέχεια δείχνει πώς μπορείτε να κάνετε instantiate τον εκπρόσωπο που δηλώθηκε παραπάνω.

MyDelegate d = νέο MyDelegate (ShowText);

Μόλις δηλώσετε και τεκμηριώσετε τον πληρεξούσιο, μπορείτε να επικαλεστείτε τη μέθοδο στην οποία ο εκπρόσωπος δείχνει εύκολα.

δ ("Γεια σου Κόσμος ...");

Εδώ, d είναι η παρουσία πληρεξούσιου

Μπορείτε επίσης να καλέσετε τη μέθοδο που δείχνει η παρουσία πληρεξούσιου χρησιμοποιώντας τη μέθοδο Invoke () στην παρουσία αντιπροσώπου όπως φαίνεται παρακάτω.

δ. Πρόκληση ("Hello World ...");

Εάν έχετε μια μέθοδο που δέχεται δύο αριθμούς και θέλετε να τους προσθέσετε και να επιστρέψετε το άθροισμα των δύο αριθμών, μπορείτε να χρησιμοποιήσετε έναν πληρεξούσιο για να αποθηκεύσετε την τιμή επιστροφής της μεθόδου όπως φαίνεται στο απόσπασμα κώδικα που δίνεται παρακάτω.

int αποτέλεσμα = d (12, 15);

Εδώ είναι η πλήρης λίστα κωδικών για την αναφορά σας.

χρησιμοποιώντας το Σύστημα;

Εκπρόσωποι ονόματος χώρου

{

δημόσιος εκπρόσωπος int MyDelegate (int x, int y);

Πρόγραμμα τάξης

    {

στατικό int Sum (int x, int y)

        {

επιστροφή x + y;

        }

στατικό κενό Κεντρικό ()

        {

MyDelegate d = νέο MyDelegate (Άθροισμα);

int αποτέλεσμα = d. Επίκληση (12, 15);

Console.WriteLine (αποτέλεσμα);

Console.ReadLine ();

        }

    }

Εκπρόσωποι σε δράση στο C #

Εδώ είναι η πλήρης λίστα κωδικών.

χρησιμοποιώντας το Σύστημα;

Εκπρόσωποι ονόματος χώρου

{

δημόσιος εκπρόσωπος άκυρο MyDelegate (κείμενο συμβολοσειράς)

Πρόγραμμα τάξης

    {

δημόσιο στατικό κενό ShowText (κείμενο συμβολοσειράς)

        {

Console.WriteLine (κείμενο);

        }

στατικό κενό Κεντρικό ()

        {

MyDelegate d = νέο MyDelegate (ShowText);

δ ("Γεια σου Κόσμος ...");

Console.ReadLine ();

        }

    }

}

Λάβετε υπόψη ότι μπορείτε να εκχωρήσετε πολλά αντικείμενα σε μια παρουσία πληρεξούσιου χρησιμοποιώντας το χειριστή +, γεγονός που καθιστά τον εκπρόσωπο έναν εκπρόσωπο πολλαπλών μεταδόσεων. Μπορείτε επίσης να συνδυάσετε παρουσίες εκπροσώπων χρησιμοποιώντας τη στατική μέθοδο Combine.

Ο χρόνος εκτέλεσης διατηρεί μια λίστα (ονομάζεται επίσης Λίστα επίκλησης) εσωτερικά για την εκτέλεση πολλαπλών μεθόδων. Η ακόλουθη λίστα κωδικών δείχνει πώς μπορείτε να χρησιμοποιήσετε τη μέθοδο Combine () για να συνδυάσετε πολλές παρουσίες εκπροσώπων.

myDelegate d1 = νέο myDelegate (Μέθοδος 1);

myDelegate d2 = νέο myDelegate (Μέθοδος 2);

myDelegate multicastDelegate = (myDelegate) Delegate.Combine (d1, d2);

multicastDelegate.Invoke ();

Ένας πληρεξούσιος που μπορεί να δείχνει πολλαπλές μεθόδους είναι γνωστός ως πληρεξούσιος πολλαπλής διανομής. Σημειώστε ότι οι παρουσίες εκπροσώπων είναι αμετάβλητες. Έτσι, όταν συνδυάζετε εκπροσώπους ή αφαιρείτε μια παρουσία εκπροσώπων από τη λίστα, δημιουργείται μια νέα παρουσία πληρεξούσιου που αντιπροσωπεύει την ενημερωμένη ή νέα λίστα των στόχων ή των μεθόδων που θα επικαλούνται.

Εκπρόσωποι Multicast σε δράση στο C #

Η ακόλουθη λίστα κωδικών απεικονίζει έναν εκπρόσωπο πολλαπλής διανομής. Σημειώστε τη χρήση της παρουσίας πληρεξούσιου: Εδώ χρησιμοποιήσαμε τον τελεστή + = για να εκχωρήσουμε τον πληρεξούσιο σε πολλές μεθόδους που έχουν πανομοιότυπες υπογραφές.

χρησιμοποιώντας το Σύστημα;

Εκπρόσωποι ονόματος χώρου

{

δημόσιος εκπρόσωπος άκυρο MyDelegate ();

Πρόγραμμα τάξης

    {

Δημόσιο στατικό κενό Μέθοδος 1 ()

        {

Console.WriteLine ("Inside Method1 ...");

        }

Δημόσιο στατικό κενό Μέθοδος 2 ()

        {

Console.WriteLine ("Inside Method2 ...");

        }

στατικό κενό Κεντρικό ()

        {

MyDelegate d = null;

d + = Μέθοδος 1;

d + = Μέθοδος 2;

δ. Επίκληση ();

Console.ReadLine ();

        }

    }

}

Οι εκπρόσωποι είναι ιδανικοί για την εφαρμογή προγραμματισμού βάσει εκδηλώσεων. Ένας πληρεξούσιος δεν χρειάζεται να γνωρίζει την κλάση του αντικειμένου στο οποίο αναφέρεται. Το μόνο που χρειάζεται να γνωρίζει είναι η υπογραφή της μεθόδου στην οποία θα έδειχνε. Η σωστή χρήση των αντιπροσώπων μπορεί να προωθήσει την επαναχρησιμοποίηση στον κώδικα σας και την ευελιξία στα σχέδιά σας. Μπορείτε να ανατρέξετε στην ηλεκτρονική τεκμηρίωση της Microsoft για περισσότερες πληροφορίες σχετικά με τους εκπροσώπους.