日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ToString() 会发生装箱吗?

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ToString() 会发生装箱吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近被問到了這個問題,我當時回答是會的,因為ToString()會把值類型轉換成引用類型,所以會發生裝箱。


后來總覺有些不妥當,所以查閱一些資料并參考網絡上的討論:


拆箱裝箱的官方解釋:

Boxing is the process of converting a value type to the type object or to any interface type implemented by this value type. When the CLR boxes a value type, it wraps the value inside a System.Object and stores it on the managed heap. Unboxing extracts the value type from the object. Boxing is implicit; unboxing is explicit. The concept of boxing and unboxing underlies the C# unified view of the type system in which a value of any type can be treated as an object.


裝箱用于在托管內存中存儲值類型。?裝箱是是值類型到?object?類型或到此值類型所實現的任何接口類型的隱式轉換。?對值類型裝箱會在堆中分配一個對象實例,并將該值復制到新的對象中。


下面是官方的幾個拆箱/裝箱的例子:

eg1: int?i?=?123; object?o?=?i;//隱式裝箱eg2: String.Concat("Answer",?42,?true)?//42和true都會發生裝箱eg3: List<object>?mixedList?=?new?List<object>(); mixedList.Add("First?Group:"); for?(int?j?=?1;?j?<?5;?j++) {mixedList.Add(j);//在添加時,j先裝箱 } var?sum?=?0;for?(var?j?=?1;?j?<?5;?j++) {//下面的一行會發生編譯錯誤:?//Operator?'*'?cannot?be?applied?to?operands?of?type?'object'?and?'object'.?//sum?+=?mixedList[j]?*?mixedList[j]);//下面經過拆箱就不會出現上面的編譯錯誤.sum?+=?(int)mixedList[j]?*?(int)mixedList[j]; }

Note:?

相對于簡單的賦值而言,裝箱和取消裝箱過程需要進行大量的計算。?對值類型進行裝箱時,必須分配并構造一個新對象。?取消裝箱所需的強制轉換也需要進行大量的計算,只是程度較輕。

更多性能的了解:https://msdn.microsoft.com/zh-cn/library/ms173196.aspx


再引入圖片來在說明內存中的變化:

int?i?=?123; object?o?=?i;//隱式裝箱


int?i?=?123;??????//?a?value?type object?o?=?i;?????//?boxing int?j?=?(int)o;???//?unboxing


看值類型有沒有進行拆箱,就看他有沒有裝換成Object或者值類型所繼承的接口類型...

Int.ToString 此方法中,值類型轉換成ValueType類型,不滿足裝箱的條件(可以查看下面IL代碼),可以判定Int.ToString是沒有裝箱的。


.method?private?hidebysig?static?void??Main(string[]?args)?cil?managed {.entrypoint//?代碼大小???????45?(0x2d).maxstack??3.locals?init?([0]?int32?v,?[1]?object?o)IL_0000:??nopIL_0001:??ldc.i4.5IL_0002:??stloc.0IL_0003:??ldloc.0IL_0004:??box????????[mscorlib]System.Int32IL_0009:??stloc.1IL_000a:??ldloca.s???vIL_000c:??call???????instance?string?[mscorlib]System.Int32::ToString()IL_0011:??ldstr??????","IL_0016:??ldloc.1IL_0017:??unbox.any??[mscorlib]System.Int32IL_001c:??box????????[mscorlib]System.Int32IL_0021:??call???????string?[mscorlib]System.String::Concat(object,object,object)IL_0026:??call???????void?[mscorlib]System.Console::WriteLine(string)IL_002b:??nopIL_002c:??ret }?//?end?of?method?Program::Main


了解了上面的信息之后以后就知道下面建議用哪一個了吧:

int?num?=?3; //用下面的哪個呢?請思考 string?numStr?=?string.Format("{0}",?num); string?numStr?=?string.Format("{0}",?num.ToString());


參考:

https://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

http://www.cnblogs.com/DebugLZQ/archive/2012/09/02/2667835.html

http://q.cnblogs.com/q/44027

http://bbs.csdn.net/topics/360191652

轉載于:https://blog.51cto.com/lybing/1790605

總結

以上是生活随笔為你收集整理的ToString() 会发生装箱吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 能直接看的av网站 | 内射国产内射夫妻免费频道 | 日韩欧美猛交xxxxx无码 | 国产成人午夜视频 | 久久精品99国产精品日本 | 久久精品1 | 夜夜嗨av一区二区三区 | 国产熟妇一区二区三区aⅴ网站 | 四虎成人精品在永久免费 | 精品少妇人妻一区二区黑料社区 | 国产麻豆一级片 | 新x8x8拨牐拨牐永久免费影库 | 奇米色在线 | 久久精品观看 | 精品人伦一区二区三区蜜桃免费 | 国产成人免费av一区二区午夜 | 18禁男女爽爽爽午夜网站免费 | 国产一区二区在线观看免费 | 阿v天堂在线观看 | 精品久久福利 | 男同av在线观看一区二区三区 | 少妇人妻丰满做爰xxx | 亚洲国产精品成人午夜在线观看 | 激情婷婷| 日本熟女毛茸茸 | 日韩欧美一区在线 | 国产又爽又黄视频 | 九色porny原创自拍 | 久久字幕 | 欧美综合视频在线 | 色综合久久精品亚洲国产 | 在线观看日韩一区二区 | 97自拍视频 | 少妇一级1淫片 | 无码一区二区三区在线观看 | 国产剧情在线观看 | 一起艹在线观看 | 91成人午夜 | av一级二级 | 色戒电影未测减除版 | 中文字幕日韩精品一区 | 老熟女高潮一区二区三区 | 精品蜜桃一区二区三区 | 国产小视频在线观看 | 伊人焦久影院 | 免费三级黄 | 精品国产视频在线 | 中日韩欧美在线观看 | 97视频免费观看 | av集中营| 黄视频在线观看免费 | 翔田千里x88aⅴ | 光明影院手机版在线观看免费 | 在线播放精品 | 日韩欧美成人网 | 丁香色婷婷 | 超碰天天 | 日本久久久久久 | 黑人vs日本人ⅹxxxhd | 日韩激情影院 | 嫩草视频在线播放 | av一二三 | 日韩成人专区 | 日韩一区二区三区四区五区六区 | 免费黄色三级 | 青青草超碰 | 国产日韩亚洲欧美 | 国产精品免费av一区二区三区 | 一二三毛片 | 欧美专区亚洲专区 | 800av在线视频 | 两性午夜视频 | 床戏高潮做进去大尺度视频 | 国产伦理精品 | 很黄很污的视频网站 | 六月丁香激情综合 | 亚洲欧洲精品成人久久奇米网 | 欧美aa级| 放几个免费的毛片出来看 | 青青草偷拍视频 | 国模吧一区二区三区 | 全程偷拍露脸中年夫妇 | 一区二区免费在线观看视频 | 奇米97 | 五月天婷婷综合网 | 超碰公开在线观看 | 最新日韩av| av九九九 | 欧美成人dvd在线视频 | 国产精品毛片在线 | 色综合综合色 | 黑人一级片 | 久久国产经典视频 | 中文字幕av网址 | 亚洲精品久久久久久国 | 日韩射| 麻豆tv在线 | 久久久久黄 | 女同二区 |