1、关于字符串操作对应用程序性能的影响
字符串相等性检查是应用程序常见的操作,于此同时,这也是一种严重损害性能的操作.执行序号(字符串的二进制)相等行检查时,CLR会进行以下操作:
1、判断字符串的长度是否相等...而执行对语言文化敏感的比较时,CLR必须比较所 有单独的字符,因为字符串即使长度不同也可能相等.
2、字符串留用 一 减少复制相同字符串实例对内存的消耗
因为字符串的不可变性,如果应用程序经常对字符串进行区分大小写的序号比较....将副本添加到内部哈希表中,返回对该副本的引用.如果应用程序不再保持对原始String对象的引用,这时垃圾回收器就会介入,将字符串的内存强行释放掉....,结果str和str1引用了堆中的同一个"xiaochao"字符串,但是我们的代码不能依赖这一行为,因为未来的CLR版本可能会重视这些特性和标志,到时候将不会对程序集元数据中的字面值字符串不进行留用.下面的代码将显示留用字符串...为了解决这个问题,许多编译器(包括C#编译器)只在模块的元数据中只将字面值字符串至写入一次,CLR默认留用程序集元数据中的字面值字符串。