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 utiliser le nom d'une Méthode en paramètre ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut [C#] Comment utiliser le nom d'une Méthode en paramètre ?
    voici mon problème :

    J'ai une classe que l'on va appeler "classe1" ( pour faire original ^^)

    dans cette classe j'ai 2 méthodes sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public void methode1(int p,DateTime d1,DateTime d2)
    public void methode2(int p,DateTime d1,DateTime d2)
    Le coeur du problème se situe dans une 3 ème méthode où je veux faire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void methode3(void(int p,DateTime d1,DateTime d2)nomDeMethode)
    mais ca en marche pas! comment dois-je fais pour que ca marche svp?

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par bakonu
    Le coeur du problème se situe dans une 3 ème méthode où je veux faire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void methode3(void(int p,DateTime d1,DateTime d2)nomDeMethode)
    Tu veux faire quoi là ? Un pointeur sur une méthode ?
    Tu te crois en C++ ?
    En C#, la solution à ton problème s'appelle delegate.

  3. #3
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    Franchement, les pointeurs y a que ca de vrai pourquoi on les a retirés dans .net

    bon j ev ais voir ce que c'est delegate

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par bakonu
    Franchement, les pointeurs y a que ca de vrai pourquoi on les a retirés dans .net

    bon j ev ais voir ce que c'est delegate

    On les retiré de .NET parce entre autre :

    - C'est pas sécurisé, un pointeur peut pointer sur n'importe quelle adresse mémoire.
    - ça vous la merde (quand c'est mal utilisé) dans les autres programmes.
    - C'est pas typé.

    ....

    maintenant si tu veux tout savoir un delegué n'est rien d'autre qu'un pointeur de fonction fortement typé et sécurisé ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  5. #5
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    pourquoi quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    delegate void target(DateTime debut,DateTime fin);
     
    public class MyClass : System.Windows.Forms.Form
    {
         .....
         public void initHierarchie(target myt)
         {
              ...
         }
         .....
    }
    il me compile pas?

    Edit:

    j'avais oublié que private était par défaut

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par bakonu
    Franchement, les pointeurs y a que ca de vrai pourquoi on les a retirés dans .net
    Je vais répondre en deux mots cette fois : Types managés

  7. #7
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par dev01
    - C'est pas sécurisé, un pointeur peut pointer sur n'importe quelle adresse mémoire.
    - ça vous la merde (quand c'est mal utilisé) dans les autres programmes.
    - C'est pas typé.
    ....
    Chui pas 100% d'accord : en C++, ton pointeur est limité à la mémoire de ton exécutable. Pour taper dans une autre partie de la mémoire, faut les far pointers.
    Mais oui, ça n'empêche pas de risquer de taper au mauvais endroit au mauvais moment. C'est pour ça que c'est interdit par défaut, paske C# c'est un langage destiné aux programmeurs haut niveau, qui ne veulent pas se prendre la tête avec la gestion de la mémoire.

    Mais rassures-toi, bakonu : on peut les utiliser, les pointeurs existent en C#. Faut juste les colelr dans un bloc unsafe...

  8. #8
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    ah la la c'est compliqué tout ca, pourquoi j'ai choisi ce métier à la con.....

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par bakonu
    ah la la c'est compliqué tout ca, pourquoi j'ai choisi ce métier à la con.....
    Paske c'est un des rares secteurs où y'a du travail qui paye ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment utiliser le nom d'une connection
    Par lazins dans le forum ADO.NET
    Réponses: 1
    Dernier message: 09/09/2010, 15h42
  2. Réponses: 16
    Dernier message: 28/08/2009, 11h09
  3. Réponses: 2
    Dernier message: 05/07/2008, 09h54
  4. Réponses: 6
    Dernier message: 29/06/2007, 12h43
  5. Réponses: 3
    Dernier message: 26/01/2007, 23h41

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