16進数値を使用するフラグ列挙型宣言がよく見られます。例えば:
[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
}
一部の人々が10進数ではなく16進数で値を書き込むことを選択する理由または根拠はありますか?私の見たところ、16進数の値を使用すると混乱して、誤ってのFlag5 = 0x16
代わりに書き込む方が簡単ですFlag5 = 0x10
。
Flag1 | Flag2
は3であり、3はのドメイン値に対応していませんMyEnum
。
10
よりも0x10
、作成する可能性が低くなるのはなぜですか。特にこれらは私たちが扱っている2進数であり、16進数は2進数に簡単に変換できますか?0x111
頭の中で翻訳する方がずっと煩わしくあり273
ません...