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 :

plusieurs valeurs pour une même énumération


Sujet :

C#

  1. #1
    Membre actif
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Points : 210
    Points
    210
    Par défaut plusieurs valeurs pour une même énumération
    Bonjour,

    Je récupère un entier qui correspond à un état (défini par une norme donc inchangeable).

    En bref, voici le genre de valeur que je peux avoir et à quoi ça correspond :
    valeur -> état
    0 -> état 1
    1 -> état 1
    2 -> état 1
    3 -> état 2
    4 -> état 3
    je voudrai faire un type énuméré ou état 1 a les valeurs 0, 1, 2
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public enum MonEnum
    {
      Etat1 = 0,
      Etat1 = 1,
      Etat1 = 2,
      Etat2 = 3,
      Etat3 = 4,
    }
    A cela, le compilo m'envoie bouler à juste titre.

    Est-ce que c'est possible de faire cela ?
    Si oui, comment ?

    Cordialement,

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Sauf erreur de ma part :

    Je ne crois pas que cela soit possible dans un Enum.
    Cependant, tu peux utiliser un Dictionary.
    De cette façon tu obtiendras le résultat voulu !

    Voila

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    si, si, c'est possible

    suffit de faire une gestion par mask

    mais les valeurs doivent etre un multiple de 2 dans ce cas là...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ca ne marcherait pas nom plus avec un Dictionary, car une clé ne peut pas être en double...

    Mais de toutes façons, je ne vois pas trop l'utilité d'un tel enum... Pour moi l'enum devrait juste contenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public enum MonEnum
    {
      Etat1,
      Etat2,
      Etat3
    }
    Ca n'a pas de sens d'associer un entier à chaque valeur de l'enum vu que ce n'est pas une bijection : un entier correspond à un seul état, mais un état peut correspondre à plusieurs valeurs. Il vaudrait mieux que aies juste une fonction qui fait la conversion d'un entier en MonEnum, genre :
    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
    public MonEnum EntierToMonEnum(int value)
    {
        switch(value)
        {
            case 0:
            case 1:
            case 2:
                return MonEnum.Etat1;
                break;
            case 3:
                return MonEnum.Etat2;
                break;
            case 4:
                return MonEnum.Etat3;
                break;
            default:
                return MonEnum.Etat1;
                break;
        }
    }

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    ou alors une gestion par masque comme en C++ avec les nombreux
    #Define de microsoft

  6. #6
    Membre actif
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par kaiko Voir le message
    Bonjour,

    Sauf erreur de ma part :

    Je ne crois pas que cela soit possible dans un Enum.
    Cependant, tu peux utiliser un Dictionary.
    De cette façon tu obtiendras le résultat voulu !
    C'est effectivement ce que je trouve de mieux. Les différentes valeurs possibles comme clés et les états comme valeurs (sachant que plusieurs états sont du coup identiques).
    Puis, je me suis rendu compte d'une certaine logique plus tardivement, j'ai fait une classe spécifique au final.

    Citation Envoyé par theMonz31 Voir le message
    si, si, c'est possible

    suffit de faire une gestion par mask

    mais les valeurs doivent etre un multiple de 2 dans ce cas là...
    Arf, ce n'est pas moi qui définit la valeur
    mais en la multipliant par deux, c'est possible. J'ai opté pour le Dictionnary pour plus de lisibilité.


    Citation Envoyé par tomlev Voir le message
    Ca ne marcherait pas nom plus avec un Dictionary, car une clé ne peut pas être en double...

    Mais de toutes façons, je ne vois pas trop l'utilité d'un tel enum... Pour moi l'enum devrait juste contenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public enum MonEnum
    {
      Etat1,
      Etat2,
      Etat3
    }
    Je n'ai pas le choix : je récupère une valeur et d'après la norme concernée, plusieurs valeurs peuvent correspondre à un même état.
    [edit] Et je n'ai pas opter pour la solution du switch parce que 256 valeurs avec un case pour chacune ou presque toutes, j'ai pensé que le Dictionnary était plus adéquat.

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Je suis très heureux d'avoir été utile !

    Bonne continuation !

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/11/2012, 11h26
  2. Plusieurs valeurs pour une même colonne
    Par maxlegrand dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/10/2007, 13h32
  3. Plusieurs entités pour une même relation
    Par Mandotnet dans le forum Schéma
    Réponses: 1
    Dernier message: 08/04/2007, 19h13
  4. [Tableaux] Plusieurs valeurs pour une seule CheckBox
    Par Phenol dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2007, 17h54
  5. Plusieurs valeurs pour un même champ
    Par will89 dans le forum Requêtes
    Réponses: 32
    Dernier message: 14/06/2006, 10h06

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