ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

列挙型の値をConsole.WriteLineに渡すのにキャストが必要?

プログラミングC# p36

サンプルはこんな感じ。

using System;

class EnumeratedConstants
{
        enum Temperatures
        {
                WickedCold = 0,
                FreezingPoint = 32,
                LightJacketWeather = 60,
                SwimmingWeather = 72,
                BoilingPoint = 212,
        }

        static void Main(String[] args)
        {
                Console.WriteLine("水の凝固点:{0}", (int)Temperatures.FreezingPoint);
                Console.WriteLine("水の沸点:{0}", (int)Temperatures.BoilingPoint);

        }
}

結果はこうなります。

水の凝固点:32
水の沸点:212

本文には、こう書いてあります。

値を表示したい場合には、基となる型(int)にキャストする必要があります。

が、しかし、このキャストを取っ払っても、コンパイルエラーにもならず元気に動きます。
前者の場合、

    IL_0008:  box        [mscorlib]System.Int32

のようになり、後者の場合、

    IL_0008:  box        EnumeratedConstants/Temperatures

のようになります。
どっちにしてもbox化されるようですが、違いはよく分かりません。。