数値を表すために暗黙の列挙型フィールドを使用することは、必然的に悪い習慣ですか?
ユースケースは次のとおりです。16進数を表す簡単な方法が必要です。C#列挙型は整数に基づいているため、自然に一致しているように見えます。値を明示的に検証する必要があるため、 achar
またはhereは好きではありません。string
列挙型の問題は、数字[0-9]
が有効なフィールド識別子ではないことです(正当な理由があります)。0-9
数字は暗黙的に存在するため、数字を宣言する必要がないことに気づきました。
したがって、私の16進数の列挙型は次のようになります。
public enum Hex : int {
A = 10,
B = 11,
C = 12,
D = 13,
E = 14,
F = 15
}
だから、私は書くことができTuple<Hex,Hex> r = Tuple.Create(Hex.F,(Hex)1);
、私にr.Item1.ToString() + r.Item2.ToString()
「F1」を与えるでしょう。基本的に、私の質問はToString()
、数値定数の値が列挙型フィールドに名前を付けたいものである場合、宣言を完全に省略することがなぜ問題になるのかということです。
列挙型としての代替表現では、次のような接頭辞を付けてフィールドを宣言できます。
public enum Hex : int {
_0 = 0,
_1 = 1,
_2 = 2,
_3 = 3,
_4 = 4,
_5 = 5,
_6 = 6,
_7 = 7,
_8 = 8,
_9 = 9,
A = 10,
B = 11,
C = 12,
D = 13,
E = 14,
F = 15
}
問題は、上記の例では「F1」ではなく「F_1」が表示されることです。明らかに、これは簡単に修正できます。私が考慮していない暗黙のアプローチに追加の問題があるかどうか疑問に思います。