Wiele razy widzę deklaracje wyliczeń flag, które używają wartości szesnastkowych. Na przykład:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
Kiedy deklaruję wyliczenie, zwykle deklaruję to w ten sposób:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
Czy istnieje powód lub uzasadnienie, dlaczego niektórzy ludzie wybierają zapisywanie wartości w systemie szesnastkowym, a nie dziesiętnym? Z mojego punktu widzenia łatwiej się pomylić, używając wartości szesnastkowych i przypadkowo Flag5 = 0x16
zamiast pisać Flag5 = 0x10
.
Flag1 | Flag2
to 3, a 3 nie odpowiada żadnej wartości domeny MyEnum
.
10
zamiast0x10
używać liczb dziesiętnych? Zwłaszcza, że mamy do czynienia z liczbami binarnymi, a hex jest trywialnie zamienialne na / z binarnego?0x111
jest o wiele mniej denerwujące w tłumaczeniu w głowie niż273
...