在C#中的拳击示例中会发生什么?

时间:2014-07-23 11:40:53

标签: c# .net boxing unboxing

Jon Skeet,有一篇有趣的帖子标题为:“Why boxing doesn't keep me awake at night”他在那里对不同输出整数值的方式的表现进行了基准测试。

我很确定 IS 拳击下面的代码,但是为什么Jon正在考虑将作为拳击?他的榜样就在最后。

int i = 5;
object o = i;
Console.WriteLine("Number is: {0}", o);

Jon的页面示例:

#if CONSOLE_WITH_BOXING
            Console.WriteLine("{0} {1} {2}", i, i, i);            
#elif CONSOLE_NO_BOXING
            object o = i;
            Console.WriteLine("{0} {1} {2}", o, o, o);
#elif CONSOLE_STRINGS
            string s = i.ToString();
            Console.WriteLine("{0} {1} {2}", s, s, s);

P.S。 "boxing and unboxing in int and string"没有回答我的问题。

谢谢。

1 个答案:

答案 0 :(得分:2)

这是拳击,唯一的区别在于它发生了什么线:

不是拳击(见http://msdn.microsoft.com/en-us/library/a0bfz20d%28v=vs.110%29.aspx):

Console.WriteLine("{0} {1} {2}", o, o, o);

拳击:

object o = i;

或考虑

三拳:

Console.WriteLine("{0} {1} {2}", i, i, i);

一拳:

object o = i;
Console.WriteLine("{0} {1} {2}", o, o, o);