[Dica] Utilização de enums combináveis em C#

Bom dia, pessoal! Aqui vai uma dica rápida de .net …

Para quem um dia precisar trabalhar com enums combináveis em C#, eis um ponto bastante interessante

1) É obrigatório decorarmos o enum com o atributo Flags.

2) É necessário sempre colocar uma opção default com o valor 0, sendo que esta opção não pode ser utilizada nas combinações que forem feitas

3) Os valores dos membros do enumerador não podem ser iguais ao valor da soma de nenhum dos outros membros. Caso contrário, o método ToString irá entender que o usuário selecionou o item cujo valor é igual à soma dos itens escolhidos

Confuso? Aí vai um exemplo!

[Flags]
enum MyOptions
{
	None = 0,
	Option0 = 1,
	Option1 = 2,
	Option2 = 4,
	Option3 = 8
}

Este enum, quando usado com a combinação Option0 | Option1 gera o resultado “Option0, Option1”, que é o que precisamos. Mas se modificarmos o mesmo para a seguinte estrutura:

[Flags]
enum MyOptions
{
	None = 0,
	Option0 = 1,
	Option1 = 2,
	Option2 = 3,
	Option3 = 4
}

Utilizando a mesma combinação, o resultado será “Option2” !!!

Interessante não? Até a próxima dica!!