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 :

probleme avec enum


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Points : 13
    Points
    13
    Par défaut probleme avec enum
    Voici un enum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        [Flags]
        public enum callStats : int
        {
            input,
            output,
            dial,
            transfering ,
            finished
        }

    A un endroit de mon code, je fais ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((call[e.channel].stat & callStats.transfering) != callStats.transfering)
    Mais, je ne comprends pas pourquoi dans le debuguer, il m'affiche que
    callStats.transfering = output | dial

    ??? il devrait valoir 8, non ??
    Car, output | dial, c'est ce que vaut call[e.channel].stat, ce qui pour moi est normal, et je veux tester en fait, si le flag transfering est dans stat.

  2. #2
    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 : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par norky Voir le message
    Voici un enum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        [Flags]
        public enum callStats : int
        {
            input,
            output,
            dial,
            transfering ,
            finished
        }

    A un endroit de mon code, je fais ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((call[e.channel].stat & callStats.transfering) != callStats.transfering)
    Mais, je ne comprends pas pourquoi dans le debuguer, il m'affiche que
    callStats.transfering = output | dial

    ??? il devrait valoir 8, non ??
    Car, output | dial, c'est ce que vaut call[e.channel].stat, ce qui pour moi est normal, et je veux tester en fait, si le flag transfering est dans stat.


    Est on censé tout deviner nous même ?

    Que quelqu'un m'apporte ma boule de cristal, et aujourd'hui je n'accepte pas de coup de fil, j'en ai pour une journée entière de divination !!!!


    Plus d'explication !!!!

  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
    salut

    vu que l'enum est un int, il fait

    input = 0
    output = 1
    dial = 2
    transfering=3 (donc 1 + 2 )

    donc output + Dial = 3, d'ou peut-etre l'affichage au debuggueur

    le mieux, tu definis toi meme les valeurs dans ton enum

    The Monz, Toulouse

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    vu que l'enum est un int, il fait

    input = 0
    output = 1
    dial = 2
    transfering=3 (donc 1 + 2 )

    donc output + Dial = 3, d'ou peut-etre l'affichage au debuggueur

    le mieux, tu definis toi meme les valeurs dans ton enum

    The Monz, Toulouse
    Mais oui !
    Merci beaucoup !
    Et sans boule de cristal en plus
    A bienôt

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Règle générale : quand tu utilises le FlagsAttribute sur un enum, force les valeurs des éléments en puissance de 2 (sauf pour les valeurs "couplées").
    Sinon, le FlagsAttribute ne sert pas à grand chose (même si il ne gêne pas)

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [FlagsAttribute]
    enum MyEnum
    {
    ValueOne = 1,
    ValueTwo =2,
    ValueThree = 4
    }

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pour information, il y a un bouton

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

Discussions similaires

  1. petit probleme avec la fonction enum !
    Par cedcyr dans le forum Débuter
    Réponses: 14
    Dernier message: 23/05/2013, 21h17
  2. petit probleme avec enum
    Par supzero dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 25/02/2009, 04h45
  3. Réponses: 5
    Dernier message: 10/03/2007, 21h45
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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