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#]Incompréhension de la fonction Parse.


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 37
    Points
    37
    Par défaut [C#]Incompréhension de la fonction Parse.
    Bonjour !

    J'ai un problème : Je ne comprends pas très bien la fonction Parse...

    Son prototype est : object Parse(Type, string, bool)

    Et la fonction renvoie un objet représentant une valeur d'une énumération. ( Cette valeur étant censée être contenue dans string).

    Bon.
    En fait, l'appel de cette fonction se fait comme ça :
    EnumerationType var = (EnumerationType)Parse(...).

    Mais je ne comprends pas pourquoi on doit caster l'objet qui est retourné par la fonction.
    Puisqu'on donne le type de l'énumération, la fonction devrait retourner un objet de ce type, nan ?

    Bref, voilà quoi.

    Amicalement.

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    La MSDN dit, comme tu as dû le voir:

    Enum.Parse, méthode (Type, String, Boolean)

    Convertit la représentation sous forme de chaîne du nom ou de la valeur numérique d'une ou de plusieurs constantes énumérées en un objet énuméré équivalent.
    C'est pour pouvoir caster en un autre type d'objet que celui de l'énumération.
    Puisqu'il est dit objet énuméré équivalent.

    ++

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Ben si tu mets un objet de type Enumeration1 dans une variable de type Enumeration2, va y avoir un problème, nan ?

  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 Tournevyks
    Mais je ne comprends pas pourquoi on doit caster l'objet qui est retourné par la fonction.
    Puisqu'on donne le type de l'énumération, la fonction devrait retourner un objet de ce type, nan ?
    Parce que la méthode est générique et qu'il faut bien qu'elle fonctionne avec n'importe quel type d'énumération. Donc pour ça on passe par un object que tu doit caster dans ton programme car toi tu sais quel est le vrai type de ton objet
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Ben C# est réflectif, nan ? Enfin, à l'éxécution, il ne peut pas connaître le type de l'objet, toussa ?

  6. #6
    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 Tournevyks
    Ben C# est réflectif, nan ? Enfin, à l'éxécution, il ne peut pas connaître le type de l'objet, toussa ?
    confond pas ce qui est fait à l'exécution et ce qui écrit au moment du développeement.

    je vais tenter un parallèle.

    Images que tu écrit une fonction qui fait une addition. Tu veux pouvoir additionner aussi bien des flotants que des entiers.

    tu écrit donc cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public double Add(double a, double b)
    {
       return a + b;
    }
    Maintenant tu éxécutes la fonction mais tu lui passe deux entiers. Rien ne te permet de d'avoir directement un entier en retour de fonction sans passer par un cast. C'est normal vu que ta fonction renvois un double et non pas un entier.

    C'est exactement la même chose dans le cas de la fonction parse. Elle te renvoi un object car c'est le plus grand dénominateur commun de tout les object mais en réalité le type de l'objet est bien celui que tu veux. c'est une simple question de généricité
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2014, 11h51
  2. Echec incompréhensible de la fonction mail
    Par laurentSc dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2010, 10h45
  3. String to Integer conversion - Fonction Parse()
    Par mihaispr dans le forum VB.NET
    Réponses: 4
    Dernier message: 30/09/2009, 19h58
  4. [1.x] Erreur incompréhensible : avec la fonction __toString()
    Par Malonix dans le forum Symfony
    Réponses: 3
    Dernier message: 01/07/2009, 12h15
  5. pb fonction parse error!!
    Par freija dans le forum Langage
    Réponses: 1
    Dernier message: 06/07/2006, 17h30

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