// ======================================================================== // // Copyright (C) 2016-2017 MARC CHEVALDONNE // marc.chevaldonne.free.fr // // Module : Program.cs // Author : Marc Chevaldonné // Creation date : 2016-09-23 // // ======================================================================== using System; using static System.Console; namespace ex_007_001_enum { class Program { /// /// voici une énumération. /// public n'est pas obligatoire. S'il est indiqué, l'énumération est utilisable en dehors de la classe. /// [Flags]//pas obligatoire mais conseillé pour améliorer le ToString de l'enum dans le cas des combinaisons public enum MusicType : byte { Classic = 1, //00000001 Jazz = 2, //00000010 Pop = 4, //00000100 Rock = 8, //00001000 //on peut rajouter des combinaisons d'enum : ici, PopRock est à la fois Pop et Rock //il faut pour cela que toutes les valeurs d'enum puissent s'exclure mutuellement PopRock = Pop | Rock //00001100 } static void Main(string[] args) { OutputEncoding = System.Text.Encoding.UTF8; //déclaration d'une variable de type MusicType MusicType mMuzik; //affectation d'une valeur possible à cette variable mMuzik = MusicType.Jazz; WriteLine(mMuzik); //un exemple d'utilisation Write("la variable mMuzik est de type : "); switch (mMuzik) { case MusicType.Classic: WriteLine("Classique"); break; case MusicType.Jazz: WriteLine("Jazz"); break; case MusicType.Pop: WriteLine("Pop"); break; case MusicType.Rock: WriteLine("Rock"); break; } WriteLine(); //un enum peut être considéré comme un instance de la classe Enum //exemple d'utilisation WriteLine("liste des valeurs de l'énumération"); foreach (string s in Enum.GetNames(typeof(MusicType))) WriteLine(s); WriteLine(); //autre utilisation Write("la variable mMuzik est de type : "); switch (mMuzik) { case MusicType.Classic: WriteLine(MusicType.Classic.ToString()); break; case MusicType.Jazz: WriteLine(MusicType.Jazz.ToString()); break; case MusicType.Pop: WriteLine(MusicType.Pop.ToString()); break; case MusicType.Rock: WriteLine(MusicType.Rock.ToString()); break; } WriteLine(); //combinaison mMuzik = MusicType.Jazz | MusicType.Rock; // 00001010 WriteLine(mMuzik); //si vous utilisez [Flags], affiche "Jazz, Rock", sinon, affiche "10" //on veut vérifier que mMuzik est du Jazz : if ((mMuzik & MusicType.Jazz) != 0) //mMuzik & Jazz = 00001010 & 00000010 = 00000010 != 0 c'est donc du jazz (entre autres) { WriteLine("Includes Jazz"); } //on veut vérifier que mMuzik n'est pas de la Pop : if ((mMuzik & MusicType.Pop) == 0) //mMuzik & Pop = 00001010 & 00000100 = 00000000 == 0 ce n'est donc pas de la Pop { WriteLine("pas pop"); } //finalement on veut rajouter Pop mMuzik |= MusicType.Pop; //00001010 | 00000100 = 00001110 if ((mMuzik & MusicType.Pop) != 0) //mMuzik & Pop = 00001110 & 00000100 = 00000100 != 0 c'est donc de la Pop { WriteLine("pop"); } //et enlever Jazz mMuzik ^= MusicType.Jazz; //00001110 ^ 00000010 = 00001100 if ((mMuzik & MusicType.Jazz) == 0) //mMuzik & Jazz = 00001100 & 00000010 = 00000000 == 0 ce n'est donc plus du jazz { WriteLine("pas jazz"); } } } }