首页 新闻 会员 周边 捐助

new CaseBLL().GetList(int id) 会在内存中如何创建?

0
悬赏园豆:50 [已解决问题] 解决于 2011-10-14 11:46

   之前看了一篇文件说 CaseBLL caseBLL=new CaseBLL()会在栈上创建一个4个字节的空间来存储new 创建的实例地址,

如果像new CaseBLL().GetList(int id)直接new完调用方法,会在内存中如何创建呢?

期待NET高手回答,thanks.

问题补充:

OK, 学习到了,其实有点区别,new 给变量就是多了赋值的操作,而直接new ().方法就直接调用方法了,呵呵,thanks.

 

  IL_0000:  nop
IL_0001: newobj instance void StudentIL.MyClass::.ctor()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: callvirt instance void StudentIL.MyClass::Print()
IL_000d: nop
IL_000e: newobj instance void StudentIL.MyClass::.ctor()
IL_0013: call instance void StudentIL.MyClass::Print()



Aleax的主页 Aleax | 初学一级 | 园豆:58
提问于:2011-10-11 17:51
< >
分享
最佳答案
0

一样的。stack不管变量名的,创建了一个新的对象,然后地址进栈,仅此而已,你的代码有没有给变量名是没有影响的。你可以比较一下两者生成的CIL有什么区别(其实就是没区别。。。)

收获园豆:50
水牛刀刀 | 大侠五级 |园豆:6350 | 2011-10-12 13:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册