Enumerations

Résolu
Signaler
Messages postés
174
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
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

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
28
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
---------------------
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
28
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
---------------------
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
28
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
---------------------
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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;
Messages postés
174
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
5
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.
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
28
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
---------------------