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.
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 }
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 }
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!