Muitas vezes, vejo declarações de flag enum que usam valores hexadecimais. Por exemplo:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
Quando declaro uma enumeração, geralmente a declaro assim:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
Existe uma razão ou razão para que algumas pessoas escolham escrever o valor em hexadecimal em vez de decimal? Na minha opinião, é mais fácil ficar confuso ao usar valores hexadecimais e escrever acidentalmente em Flag5 = 0x16
vez de Flag5 = 0x10
.
Flag1 | Flag2
é 3 e 3 não corresponde a nenhum valor de domínio de MyEnum
.
10
do que0x10
se usasse números decimais? Principalmente porque estamos lidando com números binários e hex é trivialmente conversível de / para binário?0x111
é muito menos irritante para traduzir em sua cabeça do que273
...