之前看了一篇文件说 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()
一样的。stack不管变量名的,创建了一个新的对象,然后地址进栈,仅此而已,你的代码有没有给变量名是没有影响的。你可以比较一下两者生成的CIL有什么区别(其实就是没区别。。。)