次のコードがあるとします:
Console.WriteLine("Value1: " + SomeEnum.Value1.ToString() + "\r\nValue2: " +
SomeOtherEnum.Value2.ToString());
コンパイラはこれを次のように最適化します。
Console.WriteLine("Value1: " + SomeEnum.Value1 + "\r\nValue2: " +
SomeOtherEnum.Value2);
IL 逆アセンブラーで確認したところ、次の呼び出しがあります。
IL_005a: callvirt instance string [mscorlib]System.Object::ToString()
JIT がこれを最適化するかどうかはわかりません。