[英]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.