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 :

Appel de fonction et reflexion


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Appel de fonction et reflexion
    Salut

    Est il possible , par reflexion, si l'appel d 'une fonction a ete effectue par elle meme ?

    mERCI !!

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Par réflexion je ne sais pas, je n'ai jamais utilisé encore, par contre il y a peut être moyen de s'en sortir avec la pile des appels.

  3. #3
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Je en suis pas sûr d'avoir compris la question, j'ai l'impression qu'il manque un mot. Mais si tu veux savoir si une fonction est apellée par elle-même, le plus simple est peut etre de mettre un paramètre optionel que la fonction utiliserait pour témoigner la récursivité.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Genre un compteur incrémentant le nombre d'appel de la fonction lorsque celle-ci s'appelle.
    Avec sauvegarde de l'ancienne valeur.
    Ainsi tu pourrais faire en plus des stats le nombre de fois où elle s'appelle.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    tu peux savoir si la fonction a été appelée par elle meme en décortiquant la pile d'appels comme déjà énoncé

    StackTrace est ton amis.

    Malheureusement le mécanisme de stacktrace est lent, il est donc à proscrire dans du code "critique".

    La reflexion te permettra d'exécuter la méthode mais pas de savoir comment et par qui elle a été appelée.

    La solution peut consister à rendre ta méthode récursive en private.

    Moi je fait comme cela. Mes méthodes récursives ne sont jamais directement appelées par le client, car on ne peut pas avoir confiance par défaut dans la valeur initiale fournie

    Elles sont donc toujours privées, et l'initialisation de ma récursivité se fait dans la méthode publique appelée.

    Ensuite je ne saurais que te déconseiller la récursivité, et ce pour de multiples raisons...
    1. rendre la méthode itérative plutot que récursive va te faire gagner pas loin de 5% a 10% de vitesse.
    2. tu ne surcharge pas la pile d'appel en dérécursivant ton algorithme. Il faut savoir que meme si c'est assez rare, la pile d'appel est limitée en terme de taille sous windows... ce n'est pas due à .NET c'est inhérent aux programmes windows. (les piles d'exécutions ne sont pas gérées de la meme facon sous windows et sous linux/unix)

  6. #6
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    +1 ...
    Mais ton problème est peut être très difficile à rendre itératif ! Bien qu'il soit prouvé que tout algo récursif peut être rendu itératif et vice versa, c'est parfois bien dur...

Discussions similaires

  1. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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