begin process at 2010 02 10 12:00:32
  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

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


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,608 sec (4)

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