You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mchsamples-.net-core/p02_Fondamentaux/ex_007_001_enum/Program.cs

109 lines
4.3 KiB

// ========================================================================
//
// 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");
}
}
}
}