は、このコードのビットを取る:もちろんC#enum - 0からの*暗黙的なキャストはなぜ機能しますか?
enum En {
val1,
val2,
}
void Main()
{
En plop = 1; //error: Cannot implicitly convert type 'int' to 'En'
En woop = 0; //no error
}
をenum
型変数に1
を割り当てるときに、それが失敗しました。 (明示的なキャストを叩くとうまくいく)
私の質問は、なぜ0を割り当てると失敗しないのですか?それはスペックが言うことだからそれはこの方法だ
** [なぜenumのスイッチは0に暗黙の変換を受け入れますが、他の整数は何もしませんか?](http://stackoverflow.com/questions/14950750/why-switch-for-enum-accepts-暗黙的な変換から0以外の他の形式への変換)**および** [コンパイラの値の型の解決とハードコードされた "0"の整数値](http://stackoverflow.com/questions/14224465) /コンパイラ値タイプの解像度およびハードコードされた0の整数値)。 –
明確なdupe、短い答えをしています。 – Jodrell
デフォルトでは、最初の列挙メンバーの値が宣言に設定されていない場合、その値はゼロです。 http://msdn.microsoft.com/en-us/library/ms182149(v=vs.100).aspx –