|
|
|
|
// ========================================================================
|
|
|
|
|
//
|
|
|
|
|
// 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
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// voici une énumération.
|
|
|
|
|
/// public n'est pas obligatoire. S'il est indiqué, l'énumération est utilisable en dehors de la classe.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|