System.EnumクラスのMSDNドキュメントのベストプラクティスセクションによると、次のようになります。
列挙自体の状態を反映するためだけに列挙値を定義しないでください。たとえば、列挙の終わりを示すだけの列挙定数を定義しないでください。列挙の最後の値を決定する必要がある場合は、その値を明示的に確認してください。さらに、範囲内のすべての値が有効である場合は、最初と最後に列挙された定数の範囲チェックを実行できます。
私が正しく理解していれば、列挙型を次のように宣言するべきではありません。
public enum DrawOrder
{
VeryBottom = 0,
Bottom = 1,
Middle = 2,
Top = 3,
Lowest = VeryBottom, //marks a position in the enum
Highest = Top, //marks a position in the enum
}
なぜこれが悪い習慣と見なされるのですか?