Les délégués sont-ils la même chose que les rappels? Ou sont-ils liés d'une manière ou d'une autre?Les délégués et les rappels sont-ils identiques ou similaires?
Répondre
générique, un représentant est un objet utilisé pour accéder à une méthode externe à l'objet propriétaire de la méthode, tandis qu'un rappel est une variable qui contient un délégué
en C#, les termes sont utilisés de manière interchangeable
(Je suppose que vous parlez de .NET ici.) Si non, veuillez élaborer.)
Les délégués sont la manière idiomatique d'implémenter des rappels dans .NET - mais vous n'avez pas à le faire. Vous pourriez utiliser une interface, par exemple. (En particulier, vous pourriez avoir un callback avec une méthode pour appeler en erreur, et une en cas de succès Bien sûr, vous pourriez prendre deux délégués à la place ...)
Il y a beaucoup d'utilisations pour les délégués au-delà des rappels. NET - cela dépend exactement de ce que vous considérez comme un rappel, mais les gestionnaires d'événements GUI, les démarreurs de threads, les filtres et les projections (et plus encore!) Dans LINQ to Objects utilisent tous des délégués.
Ils sont étroitement liés. Un délégué est la description de la façon dont la fonction de rappel ressemble:
delegate void MyDelegate(string Text);
Ensuite, vous pouvez avoir une fonction qui peut prendre dans le rappel en tant que paramètre.
//This will result in a MessageBox with "Lalalala"
MyFunctionThatGetsTheCallbackFunctionRef(MyCallBackFunc);
void MyFunctionThatGetsTheCallbackFunctionRef(MyDelegate TheFunction){
TheFunction("Lalalala");
}
void MyCallBackFunc(string Text){
//my callback
MessageBox.Show(Text);
}
vous 'Ref' en abrégé le' MyFunctionThatGetsTheCallbackFunctionRef' ... ne voudrais pas que le nom trop long !! – EvilGeniusJamie
Un « rappel » est un terme qui fait référence à un modèle de conception de codage, disponible dans toutes les langues qui a des pointeurs de fonction, ou un analogue aux pointeurs de fonction (ce qui est un peu ce délégué est)
Dans ce modèle, vous passez un pointeur sur une fonction à une autre fonction, de sorte que dans la fonction appelée, il peut "rappeler" la fonction que vous lui avez transmise. De cette façon, vous pouvez contrôler une grande partie du comportement interne d'une méthode depuis l'extérieur de la méthode, en passant des pointeurs à différentes fonctions de "callback" à chaque appel ... Un exemple de callback est quand vous avez un algorithme de tri cela doit être passé un pointeur vers une fonction qui va "comparer" toute paire arbitraire d'objets dans la liste à trier, pour déterminer qui précède l'autre. Sur un appel à la méthode de tri, vous pouvez passer une fonction de rappel qui compare par nom d'objet, et une autre fois passer une fonction qui compare par poids d'objet, ou autre ...
Un délégué, otoh, est un spécifique. Type net qui agit comme un conteneur spécifique à la signature pour un pointeur de fonction ... Dans le code managé .Net, les délégués sont le seul moyen de créer et d'utiliser un pointeur de fonction. Donc, dans .Net pour faire un rappel, vous passez en fait un délégué ... Mais les délégués peuvent être utilisés dans d'autres scénarios en plus des rappels. (spécifiquement, les délégués peuvent également être utilisés pour implémenter le multithreading à partir du pool de threads .Net)
Les rappels sont également utilisés pour implémenter le modèle "observateur" (implémenté dans .Net à l'aide d'événements, qui sont eux-mêmes un type spécial de délégué)
- 1. Les rappels WCF et le trafic réseau
- 2. Quelles sont les différences entre les délégués et les événements?
- 3. iPhone Interface Builder et les délégués
- 4. Comprendre les délégués
- 5. Question sur foreach et les délégués
- 6. Les délégués et les fuites de mémoire dans l'iPhone?
- 7. Comparaison Les résultats des flip flops délégués sur des clés identiques
- 8. Question sur les délégués
- 9. WSDualHttpBinding pour les rappels duplex
- 10. Les rappels arrêtent les opérations dans les rails
- 11. Variables locales avec les délégués
- 12. Différence entre les délégués application
- 13. Requêtes DRY et similaires
- 14. Rappels datés dans les calendriers sharepoint
- 15. Comment lier "this" pour les rappels jQuery?
- 16. délégués et VisualStudio IDE
- 17. Comment définir SuppressUnmanagedCodeSecurity pour les rappels?
- 18. Différence entre les rappels de client et les méthodes de page Ajax - ASP.NET
- 19. Délégués et événements
- 20. Montrer que les arbres binaires avec les mêmes traversées inorder et précommande sont identiques?
- 21. Besoin d'aide pour les rappels et les classes anonymes en Java
- 22. Méthodes et délégués anonymes
- 23. Vimdiff - Comment extraire des lignes similaires dans les fichiers et les sortir dans un fichier
- 24. Objective-C/Cocoa: Une bonne conception pour les délégués et les contrôleurs
- 25. Puis-je utiliser des noms identiques pour les champs et les paramètres du constructeur?
- 26. Pourquoi les rappels ActiveRecord requièrent-ils des variables d'instance ou des méthodes d'instance avec préfixe self?
- 27. Sélectionner les données de deux tables avec des colonnes identiques
- 28. Quelle est la différence entre les délégués C#, Dynamic Proxy, les fermetures et les pointeurs de fonction?
- 29. Utilisation des rappels AJAX avec les contrôles utilisateur ASP.NET
- 30. URL: Répertoire similaires ou pages avec extension
Ce serait une question d'entrevue impressionnante: o) Bon travail – wcm