quarta-feira, 1 de agosto de 2012

CSharp - Pra que serve esse tipo de Enum?

Hoje respondi uma pergunta e achei interessante colocar aqui.

Para que serve enums binários?

Exemplo:


    [Flags]
    public enum EnumGrimoire
    {
        MorganaLefey = 0,
        Merlin = 1,
        Teserac = 1 << 1,
        Nostradamus = 1 << 2,
        Merovingio = 1 << 3,
        AzraMahai = 1 << 4,
        Taliesin = 1 << 5
    }

Veja bem. O que tem acima pode ser traduzido como:


        MorganaLefey = 0,
        Merlin = 1,
        Teserac = 2,
        Nostradamus = 4,
        Merovingio = 8,
        AzraMahai = 32,
        Taliesin = 64

É bem esquisito né? Pois é, mas é útil para fazer o seguinte tipo de construção abaixo:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplicationParaTestarEnumsMisticos
{
    class Program
    {
        static void Main(string[] args)
        {
            greatWizards(EnumGrimoire.MorganaLefey | EnumGrimoire.Merlin | EnumGrimoire.Nostradamus);
        }

        static void greatWizards(PropostaWorkflowAcoes penmWizardry)
        {
            if (penmWizardry == (EnumGrimoire.MorganaLefey | EnumGrimoire.Merlin))
            {
               Console.Write("Você escolheu dois arqui inimigos. Cuidado!");
            }
            Console.ReadLine();
        }
    }

    [Flags]
    public enum EnumGrimoire
    {
        MorganaLefey = 0,
        Merlin = 1,
        Teserac = 1 << 1,
        Nostradamus = 1 << 2,
        Merovingio = 1 << 3,
        AzraMahai = 1 << 4,
        Taliesin = 1 << 5
    }
}



Nenhum comentário:

Postar um comentário