Багато разів я бачу декларації перерахувань прапорців, які використовують шістнадцяткові значення. Наприклад:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
Коли я оголошую перерахунок, я зазвичай декларую це так:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
Чи є причина чи обґрунтування того, чому деякі люди вибирають записати значення у шістнадцятковій, а не в десятковій формі? Те, як я це бачу, простіше заплутатися під час використання шістнадцяткових значень і випадково писати Flag5 = 0x16
замість Flag5 = 0x10
.
Flag1 | Flag2
3, а 3 не відповідає жодному доменному значенню MyEnum
.
10
а не0x10
якщо використовувати десяткові числа? Тим більше, що це бінарні числа, з якими ми маємо справу, а шістнадцятковий тривіально перетворюється в / з двійковій?0x111
набагато менше прикро перекладати в голові, ніж273
...