IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Délégués en C# explication


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut Délégués en C# explication
    Bonjour à tous ,

    Je découvre les délégués et à vrai dire j'ai un peu de mal à m'y faire car les explications que j'ai trouvé sur le net sont pas très clair je trouve et du coup j'ai un peu de mal à comprendre son utilité et comment bien l'utilisé. Je viens donc pour essayer une explication si quelqu'un a la gentillesse de le faire .

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'en vois au moins 2

    la 1ère c'est que quand on fait du multithreading, en étant sur un autre thread il est impossible de modifier l'interface, on créé donc un délégué (pointeur vers du code à exécuter, typiquement un void) qu'on donne au thread principal de l'interface pour qu'il l'exécute

    après ca peut aussi servir à exécuter du code sans savoir ce que c'est, genre une méthode qui demande un délégué en paramètre, et qui peut l'exécuter sans savoir la méthode finale (un délégué peut être paramétré)
    ca sert donc une fois qu'on a bien compris la POO et quelques design patterns permettant de faire abstraction de beaucoup de chose

    après de nos jours le délégué pur est moins utilisé, il y a la classe action et les lambdas qui permettent de faire plein de choses similaires avec une écriture plus simple
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    salut c'est certain que c'est pas si simple à comprendre ( tant qu'on n'a pas fait forcément du C++ )

    Un delegate en fait c'est ni plus ni moins qu'une fonction qui est appelée par une autre fonction; en bon français ça s'appelle un foncteur..
    c'est comme si un bloc de mémoire continu et contigu représentait le code d'une fonction A ( avec une suite d'instructions ) et à l'intérieur de ce bloc de mémoire il y ait à un endroit une instruction qui dit d'appeler une autre fonction B ailleurs dans le reste du programme mais en passant un certain nombre de paramètres et avec les types de variables en concordance avec ceux requis lors de l'appel de la fonction B..

    [citation]
    A delegate is a reference type that can be used to encapsulate a named or an anonymous method. Delegates are similar to function pointers in C++; however, delegates are type-safe and secure. For applications of delegates, see Delegates and Generic Delegates.
    [/citation]
    c'est ce qu'indique le MSDN; en C++ c'est une fonction à laquelle on passe le pointeur d'une autre fonction ( en fait une adresse mémoire ) ,le mécanisme est similaire en C# et .NET à part le fait que c'est plus sophistiqué avec un contrôle intrinsèque des exceptions

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    OK merci à vous deux pour vos réponses , me voilà un peu plus éclairci sur la chose. Je vais essayer de tester ça en pratique.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un exemple simple (simpliste ?) doit être une classe héritant de bouton et prenant un délégué en paramètre dans le constructeur
    en overridant onclick on appelle ce délégué (via ledelegue.invoke())

    du coup dans le code tu peux faire des new button(telleméthode) et les poser sur l'interface (controls.add) sans avoir à gérer d'évènement dessus, ils appelleront la méthode sur le click
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Ok merci Pol de m'avoir donner un exemple à réaliser , cela sera plus facile pour moi à mettre en pratique

  7. #7
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Salut

    Voici un tuto plutôt pas mal sur la question

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    salut oui (après coup j'y ai pensé) comme le mentionne très bien Pol63 l'intérêt des delegates c'est notamment dans l'usage du multithreading

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    OK merci à tous pour vos réponses :-)

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2010, 22h57
  2. pointeurs (explications)
    Par isidore dans le forum C
    Réponses: 4
    Dernier message: 18/04/2003, 10h41
  3. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  4. Recherche code d'un fifo,ou explication
    Par don-diego dans le forum C
    Réponses: 8
    Dernier message: 25/07/2002, 10h26
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo