Maison > développement back-end > Tutoriel C#.Net > Qu'est-ce que la délégation ? Résumé de la délégation de fonctionnalités importantes dans .net

Qu'est-ce que la délégation ? Résumé de la délégation de fonctionnalités importantes dans .net

零下一度
Libérer: 2017-06-24 09:41:00
original
2985 Les gens l'ont consulté

La délégation est une fonctionnalité très importante dans .net. Elle a été incluse depuis la version .net 1.x. La délégation est largement utilisée dans le processus de développement de projets, mais de nombreux étudiants ne l'ont pas comprise très clairement (y compris bien que je l'aie été). faisant du développement depuis de nombreuses années, j'ai peut-être utilisé la délégation sans le savoir dans de nombreux endroits, mais je ne suis toujours pas très clair à ce sujet), je vais donc compiler une série d'articles pour résumer et approfondir mon impression de délégation.

Qu'est-ce qu'un délégué

peut être résumé en deux points :

1 La compréhension la plus populaire est Un « pointeur de fonction » sûr<.>.

2. Essentiellement, un délégué est une classe (peut être prouvé via IL comme indiqué ci-dessous), et le délégué contient plusieurs méthodes avec la même signature de méthode et la même valeur de retour.

Schéma de classe déléguée :

D'après l'image ci-dessus Nous pouvons obtenir quelques informations, 1. Le délégué est une classe. 2. Le délégué hérite du type System.MulticastDelegate.

Pourquoi utiliser la délégation

Une déclaration plus populaire concerne les avantages qui peuvent être apportés par l'utilisation de la délégation ?

Ce qui suit est un petit exemple pour démontrer les avantages de l'utilisation de la délégation. La condition est qu'en saisissant le nom, la console imprime respectivement les salutations en chinois et en anglais.

Ne pas utiliser la délégation :

 1 namespace DelegateDemo 2 { 3     class Program 4     { 5         static void Main(string[] args) 6         { 7             //通过输入的name,控制台分别打印中文和英文的问候语 8             Hello("麦子", Language.Chinese); 9             Hello("mcgrady", Language.English);10 11             Console.ReadKey();12         }13 14         /// <summary>15         /// 问候16         /// </summary>17         /// <param name="name"></param>18         /// <param name="lang"></param>19         private static void Hello(string name, Language lang)20         {21             if (lang == Language.Chinese)22             {23                 ChineseHello(name);24             }25             if (lang == Language.English)26             {27                 EnglishHello(name);28             }29         }30 31         /// <summary>32         /// 中文问候33         /// </summary>34         /// <param name="name"></param>35         private static void ChineseHello(string name)36         {37             Console.WriteLine(string.Format("你好,{0}", name));38         }39 40         /// <summary>41         /// 英文问候42         /// </summary>43         /// <param name="name"></param>44         private static void EnglishHello(string name)45         {46             Console.WriteLine(string.Format("hello,{0}", name));47         }48 49     }50 51     /// <summary>52     /// 语言类型53     /// </summary>54     public enum Language55     {56         English,57         Chinese58     }59 }
Copier après la connexion

Lorsque vous n'utilisez pas la délégation, vous devez utiliser un langage d'énumération . Indique s'il faut utiliser les salutations chinoises ou anglaises, et doit également faire un jugement si...sinon....

Cela peut être beaucoup plus simple lorsque la méthode peut être transmise directement. Jetons un coup d'œil.

Utiliser la délégation :

 1 namespace DelegateDemo 2 { 3     //声明委托 4     delegate void MyDel(string name); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //通过输入的name,控制台分别打印中文和英文的问候语11             Hello("麦子", ChineseHello);12             Hello("mcgrady", EnglishHello);13 14             Console.ReadKey();15         }16 17         /// <summary>18         /// 问候19         /// </summary>20         /// <param name="name"></param>21         /// <param name="myDel"></param>22         private static void Hello(string name, MyDel myDel)23         {24             myDel(name);25         }26 27         /// <summary>28         /// 中文问候29         /// </summary>30         /// <param name="name"></param>31         private static void ChineseHello(string name)32         {33             Console.WriteLine(string.Format("你好,{0}", name));34         }35 36         /// <summary>37         /// 英文问候38         /// </summary>39         /// <param name="name"></param>40         private static void EnglishHello(string name)41         {42             Console.WriteLine(string.Format("hello,{0}", name));43         }44 45     }46 }
Copier après la connexion

Donc en résumé, la délégation apporte le principal les avantages sont les suivants :

1. Cela permet d'économiser beaucoup de jugements if...else...ou switch..., rendant le programme plus orienté objet.

2. Le découplage facilite l'expansion du programme. Exemple : composant proxy d'interface Tracy.Proxy, enregistre les journaux XML et les journaux de performances.

Bien sûr, ce n'est qu'un exemple pour illustrer les avantages de l'utilisation de la délégation. En fait, la délégation est utilisée dans de nombreux endroits, tels que les événements de clic de bouton dans Winform et Webform, la délégation Func et Action dans Linq, etc. .

Scénarios d'application délégués

1. Événements de clic sur les boutons Winform et Webform.

2, délégués Func et Action dans Linq.

3, composant proxy de l'interface Tracy.Proxy

Utilisez XMind pour résumer :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal