en principe:
1. L'essence d'une délégation est un pointeur, un pointeur de fonction. Il suffit d'obtenir la première adresse de la fonction ;
La délégation de C# ajoute de la sécurité, qui se reflète dans la détection du type du bloc d'instructions de fonction référencé par le pointeur de fonction, comme la valeur de retour, le type de paramètre et le nombre de paramètres.
Lorsqu'une valeur est attribuée à un pointeur de fonction en C (en C#, c'est lorsque le délégué est instancié, car le backend C# gère le délégué comme une classe et l'encapsule) si la valeur attribuée satisfait aux différentes conditions du type (valeur de retour , type de paramètre, nombre de paramètres) ne sont pas vérifiés, et la garantie est donnée par l'utilisateur, et C# la compilera et la demandera.
2. Le processus d'instanciation du délégué, c'est-à-dire le processus de construction de l'objet délégué, consiste à attribuer l'adresse mémoire d'un bloc d'instructions de code de fonction existant (fonction statique, fonction membre non statique de l'instance) au délégué. Le processus d'affectation est ce que fait le constructeur délégué.Par conséquent, le constructeur délégué doit avoir un paramètre qui est traité par le système en arrière-plan, qui est le pointeur de fonction qui satisfait la vérification de type et le type à vérifier (valeur de retour). , Type de paramètre, nombre de paramètres) sont tous donnés lors de la déclaration et de la définition du délégué.
3. Deux méthodes d'instanciation de délégué :
1) A a = new A (nom de méthode statique/instance. nom de méthode);
2) A a = nom de méthode statique/nom d'instance.méthode ;
Deux méthodes appelées par les délégués :
1) a.Invoke()
2)une()
La méthode utilisée pour construire un délégué peut être une méthode statique ou une fonction membre d'un objet instancié. L'essentiel est que cette instruction de code a été compilée, la mémoire a été allouée et les paramètres transmis au délégué (essentiellement, l'en-tête de). ces données d'instruction) Adresse) sont valides et significatives De ce point de vue, les méthodes statiques naturelles et les méthodes d'instance peuvent être utilisées pour construire et créer des instances de délégué.