หลายครั้งฉันเห็นการประกาศ flag enum ที่ใช้ค่าฐานสิบหก ตัวอย่างเช่น:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
เมื่อฉันประกาศ enum ฉันมักจะประกาศเช่นนี้:
[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
...