Rất nhiều lần tôi thấy các khai báo cờ enum sử dụng các giá trị thập lục phân. Ví dụ:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
Khi tôi khai báo một enum, tôi thường khai báo nó như thế này:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
Có lý do hoặc cơ sở nào giải thích tại sao một số người chọn viết giá trị dưới dạng thập lục phân thay vì thập phân? Theo cách tôi thấy, nó dễ bị nhầm lẫn hơn khi sử dụng các giá trị hex và vô tình viết Flag5 = 0x16
thay vì Flag5 = 0x10
.
Flag1 | Flag2
là 3 và 3 không tương ứng với bất kỳ giá trị miền nào của MyEnum
.
10
ít hơn thay vì0x10
sử dụng số thập phân? Đặc biệt vì đây là các số nhị phân mà chúng ta đang xử lý, và hex có thể chuyển đổi thành / từ nhị phân một cách đáng kể?0x111
là ít gây phiền nhiễu để dịch trong đầu của một người hơn273
...