列挙型とswitch文

仕事でコードを書いていて、アレ?っと一瞬悩みました。

        static void Foo (MessageBoxIcon icon)
        {
            switch (icon)
            {
                case MessageBoxIcon.Information:
                    break;
                case MessageBoxIcon.Warning:
                    break;
                case MessageBoxIcon.Exclamation:
                    break;
                case MessageBoxIcon.Error:
                    break;
            }
        }

なんの変哲もないコードですが、コンパイルが通りません。原因はなんだと思いますでしょうか?

エラー内容は、以下の通り。

ラベル 'case 48:' は既にこの switch ステートメントで使用されています。

このエラーで気づいたんですが、WarningとExclamationの値が同じなんですよね。折角、列挙型を使ってマジックナンバーを隠して抽象化していたのに、switchによって暴かれてしまいました。同じ値を持つ列挙型というのは、ちょっと危険かも知れませんね。