//字符串的内存驻留机制
        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#入门篇6-8:字符串操作 深入研究字符串的内存驻留机制的更多相关文章

  1. Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射 下一篇:Farseer.net轻量级ORM ...

  2. C#入门篇6-4:字符串操作 string分割字符串效率比较

    //分割字符串效率比较 public static void Fund() { //1.用string.Split方法 //a.字节数组: //625毫秒/百万次 string str1 = &quo ...

  3. GIT入门篇-基本概念与操作

    GIT 首先必须说明的是, 这篇文章不是阐述GIT原理性和比较深入的文章.只是对于日常开发中比较常用的需求的总结和GIT这些命令大体的原理解释.所以掌握这个只能说能够应付一定的开发需求.但是如果你是个 ...

  4. mybatis入门篇:存储过程的操作

    1.无ResultType/ResultMap查询 先定义一个查询的存储过程: DELIMITER // CREATE PROCEDURE `select_user_by_id`( IN userId ...

  5. add-binary 字符串操作,二进制字符串相加

    Given two binary strings, return their sum (also a binary string). For example,a ="11"b =& ...

  6. Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作 下一篇:Farseer.net轻量级ORM开源 ...

  7. Python中字符串操作

    #Python字符串操作 '''1.复制字符串''' #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' pri ...

  8. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  9. SQL字符串操作汇总

    SQL字符串操作汇总 --将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入此处 select stuff('hello,world!',4,4,'****')   --返回值hel*** ...

随机推荐

  1. Yii javascript 的结合 账号禁用 激活 的设置。

    2014-02-16 控制器中的代码: public function actionUpdown(){ //print_r($_POST);die(); if(Buser::model()->u ...

  2. MTK Camera 开机启动流程(转载)

    一.MTK平台Camera框架 MTK平台的Camera的架构见下图, 这里主要介绍kernel部分和HAL层部分. 1.Kernel 部分主要有两块: 1.1.image sensordriver, ...

  3. 36个炫丽的html5 canvas展示

    36个炫丽的html5 canvas展示http://html6game.com/2013/08/03/36-behind-the-html5-canvas-show.shtml 16个最好的CSS3 ...

  4. phpStorm如何在Console控制台执行php文本,而不是浏览器中

    如何在Console控制台执行php文本 phpStorm默认会在浏览器中执行脚本 默认的配置 配置PHP脚本 扩展,配置项目运行

  5. JavaSE复习_1 Java的基本格式和运算符

    △.代表在当前目录.classpath能在任何路径下访问类文件. △单行注释可以嵌套,多行注释不能嵌套 △java中的标识符只能有数字,字母,$和_,其他的符号都是错误的,不合法的.其中数字不能是开头 ...

  6. Android Contacts (android通讯录读取)-content provider

    Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据 ...

  7. CentOS查看内核版本,位数,版本号 (zhuan)

    http://blog.csdn.net/painsonline/article/details/7668824 ******************************************* ...

  8. Sqlserver_left join 、right join、 inner join 用法

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  9. Java跟Javac,package与import

    今天讨论一下2个指令与2个关键字. 这次的没有IDE环境,直接在txt文本里编程,在cmd里编译运行,搞清楚java的文件结构,还有怎么设置编译器查找类的路径.首先是javac,有一个可带参数java ...

  10. ubuntu server nginx 安装与配置

    ubuntu server nginx 安装与配置 一:关于nginx http://wiki.ubuntu.org.cn/Nginx http://nginx.org/cn http://wiki. ...