淘小店

c# string类型的一个理解误区

今天看到一个面试题,执行string abc= “aaa"+"bbb"+"ccc" 共分配了多少内存。

我首先想到了,string变量是只读的,每次+都会生成一个新的string对象,这样的话,首先执行string abc="aaa"会在托管堆上分配一块内存存放aaa,然后执行 ”aaa“+”bbb“,又会生成一个新的对象,然后再分配一块内存,随后执行+”ccc“也是一样,呵呵,其实这是错误的。c#编译器对这种操作进行了优化,上面的这种写法会被编译成与string abc="aaabbbccc"相同的代码,并没有额外的分配内存,所以只会在托管堆上分配一块内存存放aaabbbccc,在堆栈上分配一块内存存放引用。

 

posted on 2011-02-19 15:30  adu123  阅读(224)  评论(0编辑  收藏  举报

导航

淘小店