网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> .NET专栏 >> 浏览文章
 
 
装箱、转型、方法调用他们究竟有什么区别?
作者:袁袁整理 来源:帝网科技 日期:2008年08月23日 点击数:



以下为引用的内容:
装箱、转型、方法调用这些我们天天进行的日常工作之前到底有什么差别?

以下为引用的内容:
struct UserInfoStruct
 2{
 3   public int UserId;
 4   public string UserName;
 5}
 6class UserInfoClass
 7{
 8   private int UserId;
 9   private string UserName;
10}
11class Program
12{
13
14    static void Main(string[] args)
15    {
16         object objString = "abc";
17
18         string aString = (string)objString;
19         string bString = objString.ToString();
20         string cString = Convert.ToString(objString);
21
22         object objInt = 5;
23         int aInt = (int)objInt;
24         int bInt = Convert.ToInt32(objInt);
25
26         object objStruct = new UserInfoStruct();
27         UserInfoStruct aUserInfoStruct = (UserInfoStruct)objStruct;
28
29         object objClass = new UserInfoClass();
30         UserInfoClass aUserInfoClass = (UserInfoClass)objClass;
31     }
32}


前几天在群里聊天,有人问:

string aString = (string)objString;

string bString = objString.ToString();有什么区别,我当时就回答“一个是转型、一个是方法调用”,刚说完就觉得自己是在说废话,其实我也不知道内部到底发生了什么,如是就reflector,ILDASM,google一起上,现在把弄出来的结果整理了一下,share出来,并把相似的几个都集在一起讨论,由于我不懂WinDbg,所以无法深入,就浅尝辄止吧。

下面是main方法的IL代码:

以下为引用的内容:
1.method private hidebysig static void  Main(string[] args) cil managed
 2{
 3  .entrypoint
 4  // Code size       97 (0x61)
 5  .maxstack  1
 6  .locals init ([0] object objString,
 7           [1] string aString,
 8           [2] string bString,
 9           [3] string cString,
10           [4] object objInt,
11           [5] int32 aInt,
12           [6] int32 bInt,
13           [7] object objStruct,
14           [8] valuetype SomeKits.UserInfoStruct aUserInfoStruct,
15           [9] object objClass,
16           [10] class SomeKits.UserInfoClass aUserInfoClass,
17           [11] valuetype SomeKits.UserInfoStruct CS$0$0000)
18  IL_0000:  nop
19  IL_0001:  ldstr      "abc"
20  IL_0006:  stloc.0
21  IL_0007:  ldloc.0
22  IL_0008:  castclass  [mscorlib]System.String
23  IL_000d:  stloc.1
24  IL_000e:  ldloc.0
25  IL_000f:  callvirt   instance string [mscorlib]System.Object::ToString()
26  IL_0014:  stloc.2
27  IL_0015:  ldloc.0
28  IL_0016:  call       string [mscorlib]System.Convert::ToString(object)
29  IL_001b:  stloc.3
30  IL_001c:  ldc.i4.5
31  IL_001d:  box        [mscorlib]System.Int32
32  IL_0022:  stloc.s    objInt
33  IL_0024:  ldloc.s    objInt
34  IL_0026:  unbox.any  [mscorlib]System.Int32
35  IL_002b:  stloc.s    aInt
36  IL_002d:  ldloc.s    objInt
37  IL_002f:  call       int32 [mscorlib]System.Convert::ToInt32(object)
38  IL_0034:  stloc.s    bInt
39  IL_0036:  ldloca.s   CS$0$0000
40  IL_0038:  initobj    SomeKits.UserInfoStruct
41  IL_003e:  ldloc.s    CS$0$0000
42  IL_0040:  box        SomeKits.UserInfoStruct
43  IL_0045:  stloc.s    objStruct

  相关文章
 
·ASP.NET使用log4Net日志组件教程(日志
·ASP.NET MVC 框架
·C#实现的BinaryTree
·WebForms使用System.Web.Routing
·ASP.NET获取远程网页下载到本地文件
·一个“简单”的ASP.NET的服务器控件
·ASP.net与PHP两大网站开发架构优势对比
·教你七招提高.NET网站性能
·ASP.NET未来:简化开发 HTML5性能提升
·ASP.NET实现类似Excel的数据透视表
·FileUpload上传多文件出现错误的解决方
·.NET从优酷专辑中采集所有视频及信息(
·ASP.NET 4中的SEO改进
·详解Asp.net MVC DropDownLists
·提高ASP.NET应用程序性能的几招方法
·asp.net实现51job地区选择效果
·ASP.NET中创建GeoRSS订阅源
·ASP.NET 4.0开发更加简便
·ASP.NET页面间数据传递的方法
·ASP.NET的SEO:使用.ashx文件——排除
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号