Enumerations

Résolu
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 - 19 janv. 2009 à 16:22
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 20 janv. 2009 à 09:31
Bonjour à tous. Après etre passé par la msdn et google je viens ici. Sauriez-vous comment compter le nombre élèment ou item je sais pas trop dans une énumération? J'en ai absolument besoin pour définir la taille d'un tableau bidimensions donc si quelqu'un a une idée merci beaucoup.

La connaissance est la plus grande des richesses.

6 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 janv. 2009 à 17:36
Bonsoir,

Tu devrais trouver ton bonheur avec la fonction suivante:
FieldInfo[] infos = typeof(Enum1).GetFields();//using System.Reflection; & Enum1 le nom de ton énumération.

Cela te sort juste un champs en trop: la valeur. Il te suffit alors de trier.
Mais, comme j'ai peur de te dire des conneries, je préfère te laisser chercher ou laisser quelqu'un d'autre répondre à ma place sur ce sujet.

Bonne soirée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 janv. 2009 à 17:49
Une petite astuce de sioux:

int count = 0;
foreach(FieldInfo info in typeof(Enum1).GetFields())
{
   if(info.FieldType.BaseType == typeof(System.Enum))
   {
      ++count;
   }
}

Y-a-t-il une meilleure solution ???

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 janv. 2009 à 18:00
J'ai trouvé un peu plus juste:
int count = 0;
foreach (FieldInfo info in typeof(Enum1).GetFields())
{
   if (info.FieldType.IsSubclassOf(typeof(System.Enum)))
   {
      ++count;
   }
}

Je pense que c'est mieux d'utiliser la fonction IsSubclassOf(Type):
http://msdn.microsoft.com/fr-fr/library/system.type.issubclassof(VS.80).aspx

Bonne soirée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
20 janv. 2009 à 04:50
Salut, tu peux également laisser le framework se charger tout seul de la "reflexion" :

int[ ] values = ( int[ ] )Enum.GetValues( typeof( FontStyle ) );
int cnt = values.Length;
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 5
19 janv. 2009 à 18:02
Je vais tester ça ce soir et je validerai ta réponse le cas échéant si le résultat est positif. Merci beaucoup pour ta réponse si prompte.
La connaissance est la plus grande des richesses.
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
20 janv. 2009 à 09:31
Merci Lutinore pour la méthode, elle est plus intéressante et moins compliquée je pense.
Je note ceci.

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0