begin process at 2012 02 10 10:45:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Enumérations


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Enumérations

vendredi 29 mai 2009 à 12:22:06 | Enumérations

LordOfTheShadow

Bonjour à tous! J'ai un petit soucis avec une énumération (cf ci-dessous). [FlagsAttribute] public enum fa { LI = 1, PE = 2, DI = 4, HO = 8 }; Je suis obligé de mettre un FlagsAttribute sur mon énumération car des fois je ne veux que certaines valeurs dans cette énumération. Mais maitenant je voudrais récupérer le rang de l'énumération c'est à dire que pour HO j'obtiendrai 4 (ou 3 si on commence à compter à partir de 0). Mais vu que j'ai mis les flagsAttribute j'obtient 8 au lieu de 4 (ou 3). Quelqu'un aurait-il un moyen pour je puisse avancer? Merci beaucoup.
vendredi 29 mai 2009 à 13:54:22 | Re : Enumérations

sebmafate

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
oui... à ton avis, quel est le point commun entre 1, 2, 4, et 8 ?








Ce sont des puissances de 2 :
1 = 2^0
2 = 2^1
4 = 2^2
8 = 2^3

à toi d'écrire la méthode qui va bien !


Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
vendredi 5 juin 2009 à 13:43:34 | Re : Enumérations

LordOfTheShadow

Je te remercie malgrès que j'étais au courant pour ça...Comme solution j'ai fait la même énumération sauf qu'elle ne se base pas sur les bases de 2. Comme ça m'évite d'avoir des traitements trop complexes du genre /2 ou je ne sais quoi... Merci quand même sebmafate.
dimanche 3 janvier 2010 à 16:47:06 | Re : Enumérations

thedarkkillerz

Salut,
Un truc intéressant avec les énumérations en puissances de 2 est que tu peux travailler en binaire.
Par exemple:
fa test = new fa(); // A ce stade, test vaut 0
test = LI; //test vaut 1
test |= PE; // test vaut 3 car on a "fusionné" les bits avec le "ou" binaire, soit 00000001 | 00000010 = 00000011

if((test & PE) == PE) // On peut extraire la composante PE avec un "et" binaire pour tester une condition; 00000011 & 00000010 = 00000010
....

on peut faire la même chose avec un "ou":
if((test | PE) == test) // 00000011 | 00000010 = 00000011
....

J'espère que ça poura t'aider..
lundi 4 janvier 2010 à 12:06:47 | Re : Enumérations

krimog

Administrateur CodeS-SourceS
Salut. Tu peux essayer ça :

Code C# :
public int GetRang(fa valeur)
{
    int i = 0;
    foreach (fa test in Enum.GetValues(typeof(fa)))
    {
        if(test == valeur) return i;
        i++;
    }
    return -1; // Si valeur n'est pas dans la plage de fa
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -


Cette discussion est classée dans : énumération, flagsattribute, enumérations


Répondre à ce message

Sujets en rapport avec ce message

Constante et énumération LVITEM dans API SendMessage [ par jacma ] BonjourDans la déclaration ci-dessous de l'API SendMessage employée avec une ListView, à quelle constante correspond Int32 wMsg?static extern Int32 Se Comment mettre la même énumération dans plusieurs classes ? [ par oberown ] J'ai une énumération, et je voudrais que chaque classe est la même.Suis-je obligé de faire un copier/coller de mon énumération dans chaque classe ? Ou Enumérer les éléments d'une énumération [ par oberown ] Comment enuméré tout les éléments d'une énumération.Par exemple on a:public enum Test{ Haut,Bas,Droite,Gauche,}Et on veut qu'on afficheHautBasDroiteGa Trouver un élément dans une énumération [ par oberown ] Bon je suis en pleins les énumérations, au cas où si ca se voyait pas ;-)Donc j'ai une string elt, et une enum test;Comment faire pour savoir si mon e Obtenir une partie d'une énumeration [ par simlaboum ] Bonjour, j'ai une énumération avec plusieurs champ, et je voudrais les affichés tous sauf le premier.Je ne trouve pas comment faire car ceci affiche t Gros problême d'énumération [ par LordOfTheShadow ] Bonjour à tous! Voilà mon problême: J'ai une énumération "famille" et 4 autres énumérations qui définissent des identifiants de chacune des familles


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales