簡體   English   中英

在C#中的此Boxing示例中會發生什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM