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 :

[C#] Comment pointer une fonction ?


Sujet :

C#

  1. #1
    Membre confirmé Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut [C#] Comment pointer une fonction ?
    Bonjour,
    je cherche a savoir si il y existe un moyen de stocker des pointeurs de fonctions dans un tableau, de maniere a appeller differentes fonction dynamiquement...
    Ces fonctions necessitent aussi des arguments de type different, donc je sais vraiment pas si c'est faisable...

    voila
      0  0

  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
    Regarde du côté des délégués
      0  0

  3. #3
    Membre confirmé Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    j'y ai pense, mais, un delegue ne necessite il pas un event?
      0  0

  4. #4
    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
    Absolument pas. Les événements sont liés aux délégués c'est vrai (le délégué représente le type de l'événement en fait), mais il n'y a pas besoin d'événement pour utiliser les délégués, heureusement
      0  0

  5. #5
    Membre confirmé Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    je vois
    je veux pas trop en demander, mais, n'ayant jamais utilise un delegate sans events associe, je ne sais pas comment sa marche, si tu as deux trois ligne d'exemple, ce serait cool
      0  0

  6. #6
    Membre confirmé Avatar de deeal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 218
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public delegate String MethodDelegue( TypeDeLaMethode XX );
    String : tu met le type de retour de ta fonction

    donc tu declares la modele de fonction que recevra ton delegate

    et apres disant que tu as une classe qui s'appelle TOTO qui a une methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public String Tata(TypeDeLaMethode  variable)
    {
     // le code de ta methode
    }
    // ce que tu veux
    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
     
    public static void Main()
    {
    // code
    TOTO MaClasse = new TOTO();// tu cree ta classe
    MethodeDelegue DInstance = new MethodeDelegue(MaClass.Tata);
    // et la ton "Pointeur de fonction"
     
    //
     
     
    apres tu appeller ta fonction delegue
    TypeDeLaMethode ff = new ....; 
    // a modifier seulent le type a passer
    String TITI = DInstance(ff);
    }
      0  0

  7. #7
    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
    sur le framework .NET 2.0 la plupart du temps, il n'est pas nécessaire d'utiliser le contructeur du délégué mais simplement de faire

    FonctionDelegue handler = this.Fonction;

    avec FonctionDelegue le délégué, et Fonction la fonction qui correspond à appeler.
    Maintenant c'est sure qu'il est plus propre de l'instancier, mais ce n'est pas obligatoire, 2.0 le fait automatiquement dans la majorité des cas.
      0  0

  8. #8
    Membre confirmé Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    merci pour les eclairsissement les gars =)
    ca y es j'ai capte =)
      0  0

  9. #9
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par cinemania
    sur le framework .NET 2.0 la plupart du temps, il n'est pas nécessaire d'utiliser le contructeur du délégué mais simplement de faire

    FonctionDelegue handler = this.Fonction;

    avec FonctionDelegue le délégué, et Fonction la fonction qui correspond à appeler.
    Maintenant c'est sure qu'il est plus propre de l'instancier, mais ce n'est pas obligatoire, 2.0 le fait automatiquement dans la majorité des cas.
    Comment ça il ne le fait pas tout le temps ? C'est nul. Comment tu sais si ça marche ou pas ? T'essayes, tu compiles et tu vois ? Quelle bande de charlots chez MS. C'est pas avec ce genre de blague que je vais me mettre au framework 2
      0  0

  10. #10
    Membre confirmé Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    Citation Envoyé par Mose
    Comment ça il ne le fait pas tout le temps ? C'est nul. Comment tu sais si ça marche ou pas ? T'essayes, tu compiles et tu vois ? Quelle bande de charlots chez MS. C'est pas avec ce genre de blague que je vais me mettre au framework 2
    Je crois que t'as pas compris a ce que Cinemania a explique, parce que ta reaction est vraiment incoherente...
    sinon donne moi un seul exemple de compilo qui sait tout detecter... il n'existe aucun compilo qui puisse predire ce qui se passe vraiment a l'execution.
    Dans tout les cas, tu passe pas mal de temps a tester/debuguer ton appli
      0  0

  11. #11
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Si si, j'ai compris.
    Et je trouve ça complètement idiot de devoir passer par un new dans certains cas et pas dans d'autres. Ca rajoute de la complexité gratuitement, ça rend C# moins intuitif, et ça embrouille les débutants.

    Sinon je vois pas bien le rapport avec ton compilo qui sais tout détecter ou pas. Mon problème c'est les liberté qu'on prend avec le langage, qui petit à petit lui font perdre son sens et son côté "carré", indispensable en informatique (à mon humble avis de codeur-psycho-rigide)

    Bon, et puis on va éviter le débat "un compilateur n'est pas capable de tout détecter", paske tu te plantes. Renseigne-toi sur un truc qui s'appelle "la méthode B".
      0  0

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Par défaut
    Citation Envoyé par Mose
    sur le framework .NET 2.0 la plupart du temps, il n'est pas nécessaire d'utiliser le contructeur du délégué mais simplement de faire

    FonctionDelegue handler = this.Fonction;

    avec FonctionDelegue le délégué, et Fonction la fonction qui correspond à appeler.
    Maintenant c'est sure qu'il est plus propre de l'instancier, mais ce n'est pas obligatoire, 2.0 le fait automatiquement dans la majorité des cas.
    Ah tiens, je ne savais pas qu'il était parfois nécessaire d'instancier explicitement le délégué. Peux-tu me dire dans quelle situation cela peut se produire stp, ça m'intrigue ?

    Citation Envoyé par Mose
    Comment ça il ne le fait pas tout le temps ? C'est nul. Comment tu sais si ça marche ou pas ? T'essayes, tu compiles et tu vois ? Quelle bande de charlots chez MS. C'est pas avec ce genre de blague que je vais me mettre au framework 2
    Inutile d'être insultant pour se faire entendre, ça ne fait que décrédibiliser tes messages. Si tu tiens à utiliser ad aeternam le framework 1.x, rien ne t'en empêche : tu passes simplement à côté d'une évolution majeure qui apporte son lot de petites merveilles.

    Citation Envoyé par Mose
    Si si, j'ai compris.
    Et je trouve ça complètement idiot de devoir passer par un new dans certains cas et pas dans d'autres. Ca rajoute de la complexité gratuitement, ça rend C# moins intuitif, et ça embrouille les débutants.
    C'est mon avis personnel, mais je pense qu'un débutant préférera affecter directement la fonction au délégué, et qu'il saura comprendre sans grande difficulté la "version longue".

    Citation Envoyé par Mose
    Sinon je vois pas bien le rapport avec ton compilo qui sais tout détecter ou pas. Mon problème c'est les liberté qu'on prend avec le langage, qui petit à petit lui font perdre son sens et son côté "carré", indispensable en informatique (à mon humble avis de codeur-psycho-rigide)
    Ce n'est pas une liberté néfaste comme tu l'entends. C'est un raccourci qui ne nuit en rien à la lisibilité et n'ajoute pas d'ambiguïté. On essayera simplement de se contraindre à une seule des deux approches pour le même projet, de la même manière que l'on donne des règles sur le nommage des variables, la position des accolades, de l'indentation, etc.

    Bon, et puis on va éviter le débat "un compilateur n'est pas capable de tout détecter", paske tu te plantes. Renseigne-toi sur un truc qui s'appelle "la méthode B".
    C'était peut-être mal exprimé, mais il parle des erreurs lors de l'exécution, qui ne sont évidemment pas détectables à la compilation (si seulement ), mais il s'agit d'autre chose, on est d'accord.
      0  0

  13. #13
    Membre confirmé Avatar de deeal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 218
    Par défaut
    Citation Envoyé par Mose

    Bon, et puis on va éviter le débat "un compilateur n'est pas capable de tout détecter", paske tu te plantes. Renseigne-toi sur un truc qui s'appelle "la méthode B".
    ah cela je parie
    le compliteur fait de son mieux, mais il y'a des erreurs qui n'apparaiterons qu'a l'execution , sinon on aurait tous des programmes une fois compiles ne poseraient aucun problemes
      0  0

  14. #14
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par smikar
    Inutile d'être insultant pour se faire entendre, ça ne fait que décrédibiliser tes messages. Si tu tiens à utiliser ad aeternam le framework 1.x, rien ne t'en empêche : tu passes simplement à côté d'une évolution majeure qui apporte son lot de petites merveilles.
    Insultant ? Bah y'a quand même plein de petits problèmes à la con, de trucs à moitié fais qui m'agacent un peu dans le framework. Ca manque d'homogénéité, et le pire c'est que je sais exactement pourquoi : j'ai bossé en très proche collaboration avec MS et leur gestion de projet est loin d'être la meilleure. Mais bon... faudrait faire un nouveau topic pour parler de tout ça...

    Un exemple que j'ai rencontré très récemment, dans System.Reflection :
    MethodInfo a une propriété 'IsStatic'
    FieldInfo a une propriété 'IsStatic'
    mais PropertyInfo non... super...
    et MemberInfo non plus, alors que ça aurait un sens. Mais passons.
    Citation Envoyé par smikar
    C'est mon avis personnel, mais je pense qu'un débutant préférera affecter directement la fonction au délégué, et qu'il saura comprendre sans grande difficulté la "version longue".
    Ouais, mais bon.. va lui expliquer que ça marche dans certains cas et pas dans d'autres.
    - "Pourquoi ?"
    - "Bah je sais pas".
    Maintenant, si toi tu sais, la réponse m'intéresse, et si la justification est bonne, je suis prêt à éditer tous mes posts précédent pour présenter mes excuses.
    Citation Envoyé par smikar
    Ce n'est pas une liberté néfaste comme tu l'entends. C'est un raccourci qui ne nuit en rien à la lisibilité et n'ajoute pas d'ambiguïté. On essayera simplement de se contraindre à une seule des deux approches pour le même projet, de la même manière que l'on donne des règles sur le nommage des variables, la position des accolades, de l'indentation, etc.
    Mouaip. Mais là y'a deux écoles. C'est comme les VBistes qui ne comprennent pas pourquoi le C# est case-sentitive. Bah moi je comprend pas pourquoi le VB ne l'es pas. Maintenant, chacun son école. C'est un avis personnel de toute façon, ça ne se discute pas
    Citation Envoyé par smikar
    C'était peut-être mal exprimé, mais il parle des erreurs lors de l'exécution, qui ne sont évidemment pas détectables à la compilation (si seulement ), mais il s'agit d'autre chose, on est d'accord.
    Je pense aussi. Ma réaction était ptet un peu exagérée en l'occurence, mais elle valait pour tous les griefs que j'ai contre la politique de gestion de projet de MS et d'imperfection dans leur framework.
      0  0

  15. #15
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par deeal
    ah cela je parie
    le compliteur fait de son mieux, mais il y'a des erreurs qui n'apparaiterons qu'a l'execution , sinon on aurait tous des programmes une fois compiles ne poseraient aucun problemes
    Tu paries combien ? Je suis sûr de gagner
    La méthode B ça s'appelle.
    Et non, c'est vraiment pas fait pour faire du haut niveau comme du C#. Faut être assez matheux pour s'en servir. Ce n'est qu'un début, mais c'est l'avenir... et c'est français
    Une activité de preuve formelle permet de vérifier la cohérence du modèle abstrait et la conformité de chaque raffinement avec le modèle supérieur (prouvant ainsi la conformité de l'ensemble des implantations concrètes avec le modèle abstrait).
      0  0

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Par défaut
    Citation Envoyé par Mose
    Insultant ? Bah y'a quand même plein de petits problèmes à la con, de trucs à moitié fais qui m'agacent un peu dans le framework. Ca manque d'homogénéité, et le pire c'est que je sais exactement pourquoi : j'ai bossé en très proche collaboration avec MS et leur gestion de projet est loin d'être la meilleure. Mais bon... faudrait faire un nouveau topic pour parler de tout ça...
    De mon point de vue, le framework .NET est d'une homogénéité remarquable, même s'il y a certainement quelques améliorations qui pourraient être apportées ici ou là, mais cela est du détail. La perfection n'existe pas, la qualité si. Je n'aime pas voir cracher impunément sans raison fondée, d'où ma réaction.

    Mais c'est une question d'opinion et je ne suis pas un fervent défenseur de Microsoft dans toutes les situations. Je ne tiens d'ailleurs pas à polémiquer donc je n'insisterai pas, sans rancune

    Mouaip. Mais là y'a deux écoles. C'est comme les VBistes qui ne comprennent pas pourquoi le C# est case-sentitive. Bah moi je comprend pas pourquoi le VB ne l'es pas. Maintenant, chacun son école. C'est un avis personnel de toute façon, ça ne se discute pas Je pense aussi.
    Je n'essayerai pas de te faire changer d'avis non plus (d'ailleurs je ne pourrais pas travailler sans case-sensitive non plus ).
      0  0

  17. #17
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par smikar
    De mon point de vue, le framework .NET est d'une homogénéité remarquable, même s'il y a certainement quelques améliorations qui pourraient être apportées ici ou là, mais cela est du détail. La perfection n'existe pas, la qualité si. Je n'aime pas voir cracher impunément sans raison fondée, d'où ma réaction.
    Pas de pb, mais mes raisons sont fondées. Je bosse sur le framework depuis la version béta, j'ai bossé dans une SSII filiale de MS, où y'avait des anciens de MS, et on a bossé avec des gens encore chez MS, donc je connais pas mal la maison, et je ne critique que parce que je sais pourquoi les choses sont comme ça.

    Remarque à la con : vous savez pkoi y'a plein de trucs qui existent en VB et pas en C# (et vice-versa) ? Paske c'est deux équipes de dev complètement séparée qui bossent à moitié en concurrence. Ca vaut le coup de faire une corporation si c'est pour bosser chacun dans son coin...

    Bref, sinon pour conclure : je ne suis pas un anti-MS-bête-et-méchant, non, ce qui me dérange c'est les conneries niveau technique, rien de plus
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] Comment implémenter une fonction BitWise ?
    Par graphicsxp dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/04/2005, 15h52
  2. Réponses: 8
    Dernier message: 20/12/2004, 15h14
  3. Comment lancer une fonction
    Par Elois dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 21/04/2004, 19h10
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

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