源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

字符串内存驻留机制详解示例

  • 时间:2021-11-20 10:45 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:字符串内存驻留机制详解示例
[u]复制代码[/u] 代码如下:
//字符串的内存驻留机制         public static void Test()         {             //当有多个字符串变量包含了同样的字符串实际值时,             //CLR可能不会为它们重复地分配内存,而是让它们统统指向同一个字符串对象实例。             String s1 = "Hello";             String s2 = "Hello";             bool same = (object)s1 == (object)s2;//比较一下s1和s2是否是同一个引用             Console.WriteLine(same);             //这个地方为true:表示同一个引用 没有开辟新的内存空间             /*              * 我们知道,String类有很多特别的地方,其中之一就是它是“不会改变的”(immutable)。              * 这说明在我们每次对一个String对象进行操作时(比如说使用Trim,Replace等方法),              * 并不是真的对这个String对象的实例进行修改,而是返回一个新的String对象实例作为操作执行的结果。              * String对象的实例一经生成,到死都不会被改变了!              */             /*关于驻留池:它是维护哪些字面量的字符串,但是不会维护下面的这种类型*/             StringBuilder sb = new StringBuilder();             sb.Append("Hel").Append("lo");             String s3 = "Hello";             String s4 = sb.ToString(); //虽然值相同但并不是同一个引用             bool same2 = ((object)s4 == (object)s3);             Console.WriteLine(same2);             /*让编程者能够强制CLR检查驻留池;查看是否有相同的字符串*/             StringBuilder sb2 = new StringBuilder();             sb2.Append("He").Append("llo");             string s5 = "Hello";             string s6 = String.Intern(sb2.ToString());             bool same3 = (object)s5 == (object)s6;             Console.WriteLine(same3);         }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部