当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-25

    本文导语:  代码如下://字符串的内存驻留机制        public static void Test()        {            //当有多个字符串变量包含了同样的字符串实际值时,            //CLR可能不会为它们重复地分配内存,而是让它们统统指向...

代码如下:

//字符串的内存驻留机制
        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#字符串内存分配与驻留池学习分享
  • php二维数组转换为字符串示例
  • 拼接SQL字符串方法示例
  • php二维数组转成字符串示例
  • c#转义字符串中的所有正则特殊字符方法示例
  • jquery解析xml字符串简单示例
  • java字符串比较获取字符串出现次数的示例
  • sql带分隔符的截取字符串示例
  • php mb_substr()函数截取中文字符串应用示例
  • python字符串替换示例
  • md5 16位二进制与32位字符串相互转换示例
  • c#字符串编码编码(encoding)使用方法示例
  • java字符串反转示例分享
  • php中文字符串截取函数示例
  • PHP字符串的递增和递减示例介绍
  • c#字符串使用正则表达式示例
  • c++面试题字符串拷贝函数示例
  • 输入3个字符串,将它们按照字母由大到小排序(示例代码)
  • php删除字符串HTML标签的函数示例
  • php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
  • c#获取字符串宽度的示例代码(字节数方法)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python中类似printf的字符串格式化详解
  • 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
  • 基于C++字符串替换函数的使用详解
  • 深入SQL截取字符串(substring与patindex)的详解
  • c++实现strcat字符串连接库函数的方法详解
  • 基于字符串移位包含的问题详解
  • php引用字符串常量方法详解
  • C#字符串常见操作总结详解
  • Android 加密解密字符串详解
  • RandomId生成随机字符串详解实例
  • C字符串与C++中string的区别详解
  • java字符串拼接与性能分析详解
  • php字符串比较与查找方法详解
  • shell字符串操作详解
  • 字符串的模式匹配详解--BF算法与KMP算法
  • c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)
  • Java字符串详解的实例介绍
  • c语言字符数组与字符串的使用详解
  • 深入分析C#连接Oracle数据库的连接字符串详解
  • c字符串,string对象,字符串字面值的区别详解
  • EditPlus 正则表达式替换字符串详解
  • C++ Strings(字符串) 成员 size():返回字符串中字符的数量
  • 关于字符串的操作,我想得到字符串的长度,和他开始两位组成的新的字符串,例如::
  • C++ Strings(字符串) 成员 c_str():将字符串以C字符数组的形式返回
  • 如何使GDB显示完整的字符串变量,当字符串比较长时。
  • C++ Strings(字符串) 成员 empty():如果字符串为空,返回真
  • php判断字符串在另一个字符串位置的方法
  • C++ Strings(字符串) 成员 length():返回字符串的长度
  • 请教,有关16进制字符串形成2进制字符串的问题!
  • C++ Strings(字符串) 成员 resize():重新设置字符串的大小
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3