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

C# Discussion :

Valeur de retour d'un Multicast Delegate


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut Valeur de retour d'un Multicast Delegate
    Bonsoir

    Je m'interrogeais sur un point : quelle est la règle qui fixe la valeur de retour d'un appel à un delegate multicast ?

    Explication - considérons le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    delegate int DumbDelegate();
     
    static int Func1()
    {
    	return 1;
    }
    static int Func2()
    {
    	return 2;
    }
     
    static void Main()
    {
    	DumbDelegate First, Second, All;
    	First = Func1;
    	Second = Func2;
    	All = First + Second;
    	Console.WriteLine("Invoking delegate All: {0}", All());
    	Console.ReadKey();
    }
    Le retour semble être toujours la valeur du dernier positionné. (ce qui n'est pas illogique).

    Mais est ce "normalisé" ? (c'est à dire ce comportement sera-t-il toujours le même).

    Je précise que ma question n'a pas d'implication pratique, simplement elle m'est venue à l'esprit.

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonsoir,

    C'est tout à fait normal. Les deux fonctions vont s’exécuter. Mais seul le résultat du dernier délégué sera retenu puisqu'il sera exécuté en dernier et c'est ce résultat qui est récupéré à l'affichage.

    C'est exactement le même comportement que les évènements.
    Tu peux déclarer un évènement avec ou sans le mot clé "event". Le fonctionnement reste le même, mais ce n'est ni plus ni moins qu'un délégué, tout comme ton code. quand tu t'abonne à un évènement tu fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonObjet.MonEvenement += MaMethode;
    ce qui est identique à (mais ne fonctionne pas bien entendu ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonObjet.MonEvenement = MonObjet.MonEvenement + MaMethode;
    J'espère avoir éclairci tes idées.

    Bon dev

Discussions similaires

  1. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  2. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30
  3. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  4. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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