Délégués du système de type commun (CTS, Common Type System)

Guide du développeur .NET Framework 
Délégués du système de type commun (CTS, Common Type System) 

Le runtime prend en charge les types référence qualifiés de délégués qui jouent un rôle similaire à celui des pointeurs fonction en C++. Contrairement aux pointeurs fonction, les délégués sont de type sécurisé, sûr et vérifiable. Un type délégué peut représenter n'importe quelle méthode avec une signature compatible. Alors que les pointeurs fonction peuvent uniquement représenter des fonctions statiques, un délégué peut représenter des méthodes statiques et des méthodes d'instance. Les délégués sont utilisés pour les gestionnaires d'événements et les fonctions de rappel dans le .NET Framework.

Tous les délégués héritent de MulticastDelegate, qui hérite de Delegate. Les langages C#, Visual Basic et C++ ne permettent pas l'héritage à partir de ces types mais fournissent à la place des mots clés pour la déclaration des délégués.

Étant donné que les délégués héritent de MulticastDelegate, un délégué dispose d'une liste d'appel, liste des méthodes représentées par le délégué et exécutées lorsque celui-ci est appelé. Toutes les méthodes de la liste reçoivent les arguments fournis lorsque le délégué est appelé.

RemarqueRemarque

La valeur de retour n'est pas définie pour un délégué dont la liste d'appel comprend plusieurs méthodes, même si le délégué dispose d'un type de retour.

Création et utilisation de délégués

Dans la plupart des cas, tels que pour les méthodes de rappel, un délégué représente une seule méthode, et les actions que vous devez réaliser se limitent à la création et l'appel du délégué.

Pour les délégués qui représentent plusieurs méthodes, le .NET Framework fournit les méthodes des classes déléguées Delegate et MulticastDelegate pour prendre en charge des opérations telles que l'ajout d'une méthode à la liste d'appel d'un délégué (méthode System.Delegate.Combine(System.Delegate[])), la suppression d'une méthode (méthode System.Delegate.Remove(System.Delegate,System.Delegate)) et l'obtention de la liste d'appel (méthode System.Delegate.GetInvocationList).

RemarqueRemarque

Il n'est pas nécessaire d'utiliser ces méthodes pour les délégués de gestionnaires d'événements en C#, C++ et Visual Basic car ces langages fournissent une syntaxe pour l'ajout et la suppression des gestionnaires d'événements.

Délégués static fermés et délégués d'instance ouverts

Les délégués peuvent représenter des méthodes static (Shared en Visual Basic) ou des méthodes d'instance. En général, lorsqu'un délégué représente une méthode d'instance, l'instance est liée au délégué avec la méthode. Par exemple, un délégué de gestionnaire d'événements peut disposer de trois méthodes d'instance dans sa liste d'appel, chacune faisant référence à l'objet auquel la méthode appartient.

Dans le .NET Framework version 2.0, il est également possible de créer un délégué ouvert pour une méthode d'instance. Une méthode d'instance dispose d'un paramètre d'instance implicite (représenté par this en C# ou Me en Visual Basic) et elle peut être représentée par un type délégué qui expose ce paramètre masqué. En d'autres termes, le type délégué doit disposer d'un paramètre supplémentaire au début de sa liste de paramètres formels, du même type que la classe à laquelle la méthode appartient. Le scénario inverse est également pris en charge ; il est ainsi possible de lier le premier argument d'une méthode statique.

RemarqueRemarque

La création de délégués d'instance ouverts et static fermés n'est pas directement prise en charge par Visual Basic, C++ ou C# pour les constructeurs délégués. Utilisez plutôt l'une des surcharges de méthode System.Delegate.CreateDelegate qui spécifie les objets MethodInfo, comme par exemple System.Delegate.CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo,System.Boolean).

Règles assouplies pour la liaison de délégué

Dans le .NET Framework version 2.0, les types de paramètres et le type de retour d'un délégué doivent être compatibles avec les types de paramètres et le type de retour de la méthode représentée par le délégué ; la correspondance exacte entre les types n'est pas nécessaire.

RemarqueRemarque

Dans les versions 1.0 et 1.1 du .NET Framework, les types doivent correspondre exactement.

Le paramètre d'un délégué est compatible avec le paramètre correspondant d'une méthode si le type de paramètre du délégué est plus restrictif que le type de paramètre de la méthode. En effet, cela garantit qu'un argument transmis au délégué peut être transmis à la méthode en toute sécurité.

De même, le type de retour d'un délégué est compatible avec le type de retour d'une méthode si le type de retour de la méthode est plus restrictif que le type de retour du délégué, car cela garantit que le cast de la valeur de retour de la méthode peut être effectué sans risque au type de retour du délégué.

Par exemple, un délégué avec un paramètre de type Hashtable et un type de retour Object peut représenter une méthode avec un paramètre de type Object et une valeur de retour Hashtable.

Pour obtenir des informations supplémentaires ainsi qu'un code d'exemple, consultez System.Delegate.CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo).

Délégués et appels de méthodes asynchrones

Chaque délégué dispose d'une méthode BeginInvoke qui vous permet de l'appeler de façon asynchrone, ainsi qu'une méthode EndInvoke qui nettoie les ressources par la suite. Ces méthodes sont générées automatiquement pour chaque type délégué. Lorsqu'un délégué est appelé à l'aide de la méthode BeginInvoke, la méthode qu'il représente est exécutée sur un thread appartenant au ThreadPool.

Pour obtenir des informations supplémentaires ainsi qu'un code d'exemple, consultez Programmation asynchrone à l'aide de délégués.

Voir aussi


Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/96b1ayy4.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

8 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4513
Document créé le 29/10/06 22:42, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-96b1ayy4.html Document affiché 4 fois ce mois de Mai.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,73 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Une cravate propre attire inévitablement les aliments.

Loi de Murphy
 
l'infobrol
Nous sommes le Jeudi 31 Mai 2012, 00:53, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)