string在java中是存在常量池这个概念C#中有吗?
如果有,常量池是在堆中还是在栈中?C#中结构是在堆中
类在栈中
那么方法体在哪里?

解决方案 »

  1.   

    首先你的概念是混乱的。C#是语言,内存是CLR负责组织的。所以你的提问本身就是无从谈起的。string虽然是C#的关键字,但是它对应CTS中的String,这个是框架库实现的。String内部应该使用了引用计数或者说类似“常量池”的东西。所谓结构在堆中类在栈中,这个你说的本身概念是错误的,而且就算按照你的理解也不对。结构体是值类型,在堆栈上分配空间。而对象则是在托管堆上分配空间,而对象引用则保存在堆栈上。方法体是什么东西我不理解。方法被编译成IL指令,这是放在指令区的。至于方法的参数,则有可能在堆栈上,也可能通过寄存器传值,方法内的局部变量保存在堆栈上。当然CLR理论上可以移植到各种平台,所以它的内存组织也并非绝对的。