Aller au contenu principal

Type par énumération

Le type enum appelé type par énumération est une structure qui facilite la lecture et la maintenance du code.

  • Une énumération est une liste de constantes sémantiquement liées, appelées énumérateurs.
  • Les constantes ne peuvent pas être changées à l’exécution.
  • Par défaut, le compilateur numérote séquentiellement les constantes à partir de 0.
  • Des valeurs explicites peuvent être définies à certains ou à tous les énumérateurs.

Exemples de déclaration

public enum enuQualite {Excellente, Bonne, Moyenne, Faible };
public enum enuBreuvage {Coke, SevenUp, JusDePommes, TheGlace };
public enum enuJourSemaine {Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi} ;
public enum enuJourSemaine {Lundi = 1, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche} ;
public enum enuSorteDeDisque {Normal, Test1, Test2, Test3 };
public enum enuAddressMode {Normal, Reverse, ReverseRow, ReverseColumn, StairsTopLeft, StairsTopRight, StairsBottomLeft, StairsBottomRight};

Exemples d'utilisation

  • Les énumérateurs sont souvent utilisés dans un switch.
  • L'extrait de code sw tab tab génère les cas automatiquement :
    • tapez le nom de la variable pJour et enter
    • les cas sont générés.
Exemple #1 : utilisation du type enuJourSemaine
public void TraiterJourSemaine (enuJourSemaine pJour)
{
switch(pJour)
{
case enuJourSemaine.Lundi:
...
break;
case enuJourSemaine.Mardi:
...
break ;
}
}
Exemple #2 : utilisation du type enuBreuvage
public int Quantite(enuBreuvage pBreuvage)
{
switch (pBreuvage)
{
case enuBreuvage.Coke:
return m_nbCoke;
case enuBreuvage.SevenUp:
return m_nb7up;
case enuBreuvage.JusDePommes:
return m_nbJusPomme;
case enuBreuvage.TheGlace:
return m_nbTheGlace;
default:
return -1;
}
}
Exemple #3 : utilisation du type enuQualité
// Convertir un énumérateur en entier ou en chaine.
int entierQualite = (int) objPhoto.Qualite;
string chaineQualite = objPhoto.Qualite.ToString();

Console.WriteLine(entierQualite + " " + chaineQualite);

// Convertir un entier en énumérateur
objPhoto.Qualite = (enuQualite) entierQualite;

// Boucle sur une Énumération
for (enuJourSemaine jour = enuJourSemaine.Lundi; jour < enuJourSemaine.Dimanche; jour ++)
{
cboJour.Items.Add(jour.ToString());
}