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

 更新时间:2013年12月26日 15:17:48   作者:  
字符串内存驻留机制详解示例,大家参考使用吧

复制代码 代码如下:

//字符串的内存驻留机制
        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);
        }

相关文章

  • C#中方法的直接调用、反射调用与Lambda表达式调用对比

    C#中方法的直接调用、反射调用与Lambda表达式调用对比

    这篇文章主要介绍了C#中方法的直接调用、反射调用与Lambda表达式调用对比,本文着重讲解了方法的三种调用方法以及它们的性能对比,需要的朋友可以参考下
    2015-06-06
  • C#比较数组是否相同的3种方式小结

    C#比较数组是否相同的3种方式小结

    本文主要介绍了C#比较数组是否相同的3种方式小结,主要包括SequenceEqual()方法,循环的方式比较,StructuralComparisons.StructuralEqualityComparer方式,感兴趣的可以了解一下
    2024-01-01
  • C#异常处理的一些经验和技巧

    C#异常处理的一些经验和技巧

    本文是异常处理经验性的文章,其实跟C#关系也不大。比较适合刚刚熟悉异常语法,而缺乏实战的读者。当然,经验老练的读者也可指出不足、给予意见、补充说明,一起完善文章,分享更多知识与经验
    2014-03-03
  • C#编程实现统计文件夹内文件和隐藏文件的方法示例

    C#编程实现统计文件夹内文件和隐藏文件的方法示例

    这篇文章主要介绍了C#编程实现统计文件夹内文件和隐藏文件的方法,结合具体实例形式分析了C#针对文件与目录的遍历及属性操作相关技巧,需要的朋友可以参考下
    2017-07-07
  • C# 抓图服务的实现

    C# 抓图服务的实现

    这篇文章主要介绍了C# 抓图服务的实现,帮助大家更好的利用c#处理窗口,进行截图,感兴趣的朋友可以了解下
    2021-01-01
  • c#3.0实现延迟赋值示例

    c#3.0实现延迟赋值示例

    这篇文章主要介绍了c#3.0实现延迟赋值示例,大家参考使用吧
    2014-01-01
  • .NET单点登陆的实现方法及思路

    .NET单点登陆的实现方法及思路

    这篇文章介绍了.NET单点登陆的实现方法及思路,有需要的朋友可以参考一下,希望对你有所帮助
    2013-07-07
  • C#委托与匿名委托详解

    C#委托与匿名委托详解

    这篇文章主要为大家详细介绍了C#委托与匿名委托的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#中的LINQ to Objects详解(1)

    C#中的LINQ to Objects详解(1)

    本文详细讲解了C#中的LINQ to Objects,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#实现毫秒转换成时分秒的方法

    C#实现毫秒转换成时分秒的方法

    这篇文章主要介绍了C#实现毫秒转换成时分秒的方法,涉及C#时间的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论