Molte volte vedo dichiarazioni di flag enum che utilizzano valori esadecimali. Per esempio:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
Quando dichiaro un enum, di solito lo dichiaro in questo modo:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
C'è una ragione o una logica per cui alcune persone scelgono di scrivere il valore in esadecimale anziché in decimale? Per come la vedo io, è più facile confondersi quando si usano valori esadecimali e scrivere accidentalmente Flag5 = 0x16
invece di Flag5 = 0x10
.
Flag1 | Flag2
è 3 e 3 non corrisponde ad alcun valore di dominio di MyEnum
.
10
piuttosto che0x10
se usassi numeri decimali? Soprattutto dal momento che si tratta di numeri binari con cui abbiamo a che fare e l'esadecimale è banalmente convertibile in / da binario?0x111
è molto meno fastidioso tradurre nella propria testa che273
...