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 :

bool sur Enum


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut bool sur Enum
    Bonjour

    Dans une classe je crée une méthode ayant des paramètres booléens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void MaMethode(bool Param1)
    Afin de faciliter l'utilisation de la classe j'aimerais fournir à IntelliSense les choix possibles et clarifier la synthase finale.
    C'est à dire permettre de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaMethode(Machin.Actif);
    plutôt que Pour ça j'aurai bien fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public enum Machin
        {
    Actif= true,
    Inactif
        }
     
    public void MaMethode(Machin Param1)
    {
    }
    Mais le enum est apparemment forcément un int

    Comment puis je faire ça autrement ?


    merci par avance

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Personnellement je suis plutôt partisan de l'interface publique la plus claire (et simple d'utilisation) possible du coup je préfère 2 méthodes plutôt qu'une avec un flag soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveMachin ()
    DesactiveMachin ()
     
    // au lieu de
    AgitSurMachin(bool actif)
    Surtout que rien n'empêche ces 2 méthodes de déléguer leur boulot à cette méthode qui prend un flag mais fait partie de l'interface privée de la classe.

    Après si on reste sur le modèle établi ; je partirais plutôt sur un argument de type enum ; et c'est dans le corps de cette méthode qu'il y aurait un test ou un switch pour gérer les différents cas.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Salut, pas moyen de faire autrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public enum Machin
    {
        Inactif = 0
        Actif= 1,   
    }
    Mais franchement faire Enum sur 2 valeurs n'a pas vraiment de sens.
    Un Enum te facilite la vie quand par exemple tu remontes un code d'erreur et que tu as 50 (en fait plus de 2 valeurs possibles.

    Fais plutôt une fonction comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void MaMethode(bool pEstActif)
    Enfin tout dépend de e que tu veux faire. Avec l'exemple donné voici ma réponse

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 53
    Par défaut
    Salut, si tu veux garder la structure de code que tu as donné, tu peux essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static class Machin
    {
         public const bool Actif = true;
         public const bool Inactif = false;
    }
    et tu pourra utiliser :

    MaMethode(Machin.Actif);

  5. #5
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Merci a tous et en particulier à ReiKiss

    C'est exactement ça que je cherchais à faire
    Le but étant que là où on fait appel à cette méthode on ait une syntaxe plus claire et plus intuitive sans aller regarder à quoi correspond true et false.

    Merci

  6. #6
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    en fait non :-(

    En premier ca me dit que les type static ne peuvent pas etre utilisés en paramètres, ok, je vire static...

    Après, j'ai l'intelliSence qui me propose bien ce que je voulais pour l'appel de la méthode mais
    après ça me dit que je ne peux pas convertir un bool en "Machin"

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Moi ceci fonctionne correctement chez moi (même avec la class static d'ailleur)

    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
            private void button1_Click(object sender, EventArgs e)
            {
                test(Machin.Actif);     // "C'est vrai"
                test(Machin.Inactif);   // "C'est faux"
            }
     
            private void test(bool val)
            {
                if (val)
                    MessageBox.Show("C'est vrai");
                else
                    MessageBox.Show("C'est faux");
            }
     
            public struct Machin
            {
                public const bool Actif = true;
                public const bool Inactif = false;
            }

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

Discussions similaires

  1. opération "et" de boole sur des entiers
    Par Crapuleux_Crapaud dans le forum Général Python
    Réponses: 2
    Dernier message: 17/06/2010, 23h06
  2. Question sur Enum et Annotations
    Par Soulama dans le forum Langage
    Réponses: 6
    Dernier message: 07/07/2009, 15h28
  3. question sur enum System.Data.DbType
    Par ouadie99 dans le forum C#
    Réponses: 3
    Dernier message: 21/05/2008, 10h51
  4. erreur sur enum à la creation de la table
    Par mnem0 dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/12/2006, 01h23
  5. question sur enum
    Par d-a-v-e dans le forum C++
    Réponses: 9
    Dernier message: 10/02/2006, 00h56

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