Maison > développement back-end > Tutoriel C#.Net > Explication détaillée des instances de délégué dans .net 1.x

Explication détaillée des instances de délégué dans .net 1.x

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

L'article précédent a démontré l'utilisation de la délégation pour implémenter un programme de salutation multilingue. Cet article résumera l'utilisation de la délégation dans .net 1.x.

Puisque le délégué est un type (classe), il doit passer par le processus consistant à déclarer d'abord une classe, puis à créer un nouvel objet et enfin à l'appeler.

Délégué dans .net 1.x

L'utilisation de délégué dans .net 1.x est comme ceci, le code suivant :

 1 namespace DelegateDemo 2 { 3     //声明委托 4     public delegate void MyDel(string arg1, string arg2); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //.net 1.x中的委托11             Class1 c1 = new Class1();12 13             //创建委托对象14             MyDel myDel1 = new MyDel(c1.InstanceMethod);//实例方法15             MyDel myDel2 = new MyDel(Class1.StaticMethod);//静态方法16 17             //调用委托18             myDel1("a", "b");//或者myDel1.Invoke("a", "b");19             myDel2("a", "b");//或者myDel2.Invoke("a", "b");20 21             Console.ReadKey();22         }23     }24 25     public class Class126     {27         public void InstanceMethod(string arg1, string arg2)28         {29             Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));30         }31 32         public static void StaticMethod(string arg1, string arg2)33         {34             Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));35         }36     }37 }
Copier après la connexion

À partir du code ci-dessus, nous pouvons résumer :

1. Le délégué peut accepter à la fois les méthodes d'instance et les méthodes statiques, à condition que la signature et le type de valeur de retour de la méthode correspondent au type de signature et de valeur de retour de la méthode. déléguer.

2. Il existe deux façons d'appeler un délégué. La première est essentiellement la méthode Invoke pour appeler le délégué.

Délégué d'affectation

Ce qui précède utilise new DelegateType() pour créer un délégué. En fait, une manière plus simple peut être utilisée pour créer un délégué. Le code ci-dessus pour créer un délégué peut être simplifié en :

1 //创建委托对象2 MyDel myDel1 = c1.InstanceMethod;//实例方法3 MyDel myDel2 = Class1.StaticMethod;//静态方法
Copier après la connexion

Ajouter et supprimer des méthodes pour le délégué

L'exemple ci-dessus, créer un délégué Une seule méthode est initialisée.En fait, le délégué peut ajouter plusieurs méthodes.La méthode d'ajout est implémentée via '+=', et la méthode de suppression est implémentée via '-='. 🎜>

1 //创建委托对象2 MyDel myDel = c1.InstanceMethod;3 myDel += c1.InstanceMethod2;4 myDel += Class1.StaticMethod;5 myDel += Class1.StaticMethod2;
Copier après la connexion
1. Une délégation en chaîne (ou délégation multicast) est composée de plusieurs délégués La classe System.MulticastDelegate est conçue pour la délégation en chaîne.

2, += appelle essentiellement la méthode Delegate.Combine.

Appeler le délégué

Appeler le délégué est aussi simple que d'appeler la méthode. Il vous suffit de transmettre les paramètres requis par le délégué. Ces paramètres seront utilisés pour appeler chaque méthode dans le. liste des méthodes du délégué, et dans l'ordre Appelé séquentiellement, le code suivant :

1 //调用委托2 myDel("aaa","bbb");
Copier après la connexion
La raison pour laquelle les délégués en chaîne peuvent être appelés séquentiellement est que System.MulticastDelegate maintient en interne un pointeur vers le suivant déléguer.

Résultat de sortie :

Remarque :

1, si plusieurs méthodes identiques sont ajoutées au délégué, alors ces méthodes seront appelées à plusieurs reprises.

2. Si le délégué a une valeur de retour et que la liste des méthodes appelantes du délégué contient plusieurs méthodes, seule la valeur de retour de la dernière méthode sera renvoyée et les autres valeurs de retour seront ignorées.

Enfin, 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