http://msdn.microsoft.com/ja-jp/library/aa691283.aspx
暗黙の列挙値変換を利用すると、decimal-integer-literal の 0 を任意の列挙型に変換できます。
暗黙の列挙値変換
があるのを初めて知りました。ちょっとビックリ
例えばこんな型があるとします。
enum NekoTypes
{
Mike,
Kuro,
Shiro
}
結構長いことC#を使っているので、下記のような整数リテラルを代入するコードはコンパイルエラーが発生するのを経験的に知っていています。
NekoTypes type = 1; // コンパイルエラー
列挙型に整数リテラルを代入するときは、キャストして使っていたような気がします。
NekoTypes type = (NekoTypes)1; // エラーにならない
整数リテラルでも0の場合は、暗黙の列挙値変換でコンパイルエラーになりません。
NekoTypes type = 0; // エラーにならない
初めて知って「おおっ!」と思ったのでメモしておきます。なんで0の時だけ暗黙の列挙数値変換の仕様があるのかは不明の模様。