Où dois-je utiliser des délégués?
Ce sont quelques vrais lieux qui appellent à l'intention des délégués? Je suis curieux de savoir quelles sont les situations ou les modèles sont présents où cette méthode est la meilleure solution. Aucun code n'est requis.
Vous devez vous connecter pour publier un commentaire.
Fondée sur cette déclaration, un délégué est un pointeur de fonction et il définit ce que cette fonction ressemble à la.
Un grand exemple pour une application réelle d'un délégué est le Prédicat. Dans l'exemple du lien, vous remarquerez que Tableau.Trouver prend le tableau de recherche et d'un prédicat à gérer les critères de quoi trouver. Dans ce cas, il passe une méthode ProductGT10 qui correspond au Prédicat de la signature.
Comme indiqué dans "L'apprentissage de C# 3.0: Maîtriser les principes de base de C# 3.0"
Une utilisation commune des délégués pour les génériques, Listes sont par l'intermédiaire de l'Action des délégués (ou de ses anonymes équivalent) pour créer une ligne foreach opération:
Je trouve aussi que le Prédicat délégué très utile dans la recherche ou la taille d'une Liste:
Je sais que vous avez dit, aucun code n'est requis, mais je trouve plus facile d'exprimer son utilité via le code. 🙂
Événements de liaison aux Gestionnaires d'Événement est généralement de votre première introduction aux délégués...Vous risquez de ne pas même savoir que vous avez été de les utiliser parce que le délégué est enveloppé dans le Gestionnaire d'événements de classe.
Si vous êtes intéressé à voir comment le Délégué motif est utilisé dans le vrai monde de code, ne cherchez pas plus loin que Cocoa sur Mac OS X. le Cacao est privilégié d'Apple UI toolkit pour programmer sous Mac OS X, et est codé en Objective C. Il est conçu de sorte que chaque composant de l'INTERFACE utilisateur est destiné à être étendu par l'intermédiaire de la délégation plutôt que de sous-classement ou d'autres moyens.
Pour plus d'informations, je vous recommandons de vérifier ce que Apple a à dire à propos de délégués ici.
J'avais un projet qui a utilisé win32 Python.
Pour diverses raisons, certains modules utilisés odbc.py pour accéder à la DB, et d'autres modules pyodbc.py.
Il y a un problème lorsqu'une fonction nécessaire pour être utilisé par les deux types de modules. Il avait une connexion objet passé en argument, mais alors il s'agit de savoir si l'utilisation de dbi.dbiDate ou datetime pour représenter les heures.
C'était parce que odbc.py attendu, en tant que valeurs dans les instructions SQL, les dates dbi.dbiDate alors que pyodbc.py attendu valeurs datetime.
Une autre complication est que la connexion des objets créés par odbc.py et pyodbc.py n'ont pas permis de définir des champs supplémentaires.
Ma solution a été d'envelopper les objets de connexion retourné par odbc.odbc(...) et pyodbc.pyodbc(...) par un délégué de classe, qui contient l'heure désirée en fonction de représentation que la valeur d'un champ supplémentaire, et qui en délègue tout autre domaine, les demandes à la connexion d'origine de l'objet.
J'ai eu la même question que vous et suis allé sur ce site pour une réponse.
Apparemment, je n'ai pas mieux compris, même si j'ai écrémé à travers les exemples sur ce fil.
J'ai trouvé une grande utilité pour les délégués maintenant que j'ai lu: http://www.c-sharpcorner.com/UploadFile/thiagu304/passdata05172006234318PM/passdata.aspx
Cela peut sembler plus évident pour les nouveaux utilisateurs, car les Formulaires est beaucoup plus compliqué pour passer des valeurs que ASP.NET sites web avec POST/GET (QueryString) ..
Fondamentalement, vous définissez un délégué qui prend zone de texte "texte" en tant que paramètres.
//Form1
//RÉSUMÉ: Définir délégué, instancier de nouveaux Form2 de classe, d'attribuer funData() la fonction de délégué, passer des dans votre zone de texte pour le délégué. Afficher le formulaire.
//Form2
//RÉSUMÉ: il suffit de prendre TextBox txtForm1 en tant que paramètres (tels que définis dans votre délégué) et d'affecter le texte de l'étiquette de zone de texte du texte.
J'espère que cela éclaire certains utilisent des délégués 🙂 ..
Une rapide recherche sur google est venu avec cette http://en.wikipedia.org/wiki/Delegation_pattern . Fondamentalement, chaque fois que vous utilisez un objet qui transmet les appels vers un autre objet, alors vous êtes à déléguer.