几次面试中遇到都有类似的问题,就是

string str = "aa" + "bb" + "ccc";进行了几次内存分配?

1 class Program
2 {
3 static void Main(string[] args)
4 {
5 string str = "aa" + "bb" + "ccc";
6 Console.WriteLine(str);
7 }
8 }

我们知道由于字符串是不可变的,所以我理所当然的以为进行了四次内存

分配。分别是aa,bb,ccc,aabbccc四次分配,真是情况是这样吗?

今天忽然想起来,于是写了代码做一下验证,用Ildasm看一下

实际上是分配了一次,只所以这样,是编译器进行了优化。

最新文章

  1. android性能优化练习:过度绘制
  2. es6新特性(一)
  3. C#设计模式(23)——备忘录模式(Memento Pattern)
  4. 转!!Java学习之自动装箱和自动拆箱源码分析
  5. Sybase ASE报错:server Error: 8242, Severity: 16, State: 1
  6. Linux下安装memcached
  7. [BZOJ]3243 向量内积(Noi2013)
  8. python并发编程之多线程基础知识点
  9. EasyUI datagrid 的多条件查询
  10. SQL反模式学习笔记20 明文密码
  11. Mike and strings CodeForces - 798B (又水又坑)
  12. Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
  13. web基础,用html元素制作web页面
  14. CZK 的饮料店
  15. Python+Selenium笔记(十七):操作cookie
  16. ECMAScript5新特性之isSealed、seal
  17. Mcode的介绍
  18. 在C#中使用依赖注入
  19. LoadRunner:VuGen开发脚本步骤(二)
  20. Java中的IO流(三)

热门文章

  1. Ceilometer和Gnocchi的监控架构解析
  2. 在linux中设置优先使用ipv4,而不是ipv6
  3. Ruby on Rails框架(1)-安装全攻略
  4. FCN笔记
  5. C# WinForm MessageBox弹窗倒计时的自动关闭
  6. maven仓库失效的情况下搭建maven项目
  7. 基础学习笔记之opencv(3):haartraining生成.xml文件过程[转]
  8. 006 GET API
  9. leetcode 402. Remove K Digits 、321. Create Maximum Number
  10. kotlin单个文件及文件夹复制例子