[英]What happens in this Boxing example in C#?
乔恩·斯凯特(Jon Skeet)有一篇有趣的帖子,标题为:“ 为什么拳击不能让我彻夜难眠 ”,他在此基准测试了输出整数值的不同方式的性能。
我很确定下面的代码是拳击,但乔恩(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);
PS “装箱和拆箱int和字符串”不能回答我的问题。
谢谢。
这是拳击,唯一的不同是发生在哪一行:
不装箱(请参阅http://msdn.microsoft.com/zh-cn/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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.