知识大全 对string类型和stringBuilder类型的研究

Posted 类型

篇首语:知识为进步之母,而进步又为富强之源泉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对string类型和stringBuilder类型的研究相关的知识,希望对你有一定的参考价值。

对string类型和stringBuilder类型的研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  using System;using System Collections Generic;using System Text;

  namespace TestString    class Program                   static void Main(string[] args)                    //在一次群组讨论中 谈到了string的类型问题 虽然它是引用类型 却具有很多值类型的特点 关于这个问题 做了如下研究             //由于程序中可能存在大量的相同字符串 为了节省内存 C#应该是将下面两个变量都引用存放在同一个栈的 test !            string myString = test ;            string myString = myString ;            //那么按照引用的理论 修改其中的一个字符串 另一个就应该跟着改变 例如做如下修改            myString = New test ;            Console WriteLine(myString );            //此时按理说myString 应该也变成 New test 但事实上经过测试 myString 还是 test 这是为什么呢?            //我分析 微软应该是在string类型中引入了copy on write技术 就是说 我们在修改string类型变量的时候

  //其实是重新开辟了一块内存 将修改后的内容放进去             //再利用 = 把修改后的数据所在栈的地址传给被修改的字符串变量 来达到修改字符串变量的目的!            //下面的测试很好的说明了这个问题            myString Replace( t a );            Console WriteLine(myString );            //myString Replace( t a );方法是把该字符串中的字母t换成字母a 但是经过测试myString 的内容依然是 test

  //这就是因为虽然开辟了新空间并且将修改后的值存了进去             //但是没有用 = 将新数据栈的地址传给myString

  所以myString 的值没变!

  //与string类型相对应 StringBuilder类型则有所不同            StringBuilder mySb = new StringBuilder( test );            StringBuilder mySb = new StringBuilder( test );            //StringBuilder类型在引用存放数据的栈之前加入了一个中间栈 也就是说 mySb 指向它的中间栈

  //假设这个中间栈叫stack 然后stack 再指向存放 test 的栈             //mySb 也指向它的中间栈stack 然后stack 也指向存放 test 的那个栈 当mySb 被修改时

  //依然是采用copy on write技术 但是开辟新的栈并且把修改后的数据放进去后             //会自动修改stack 让他重新指向新的数据栈 而mySb 一直还是指向中间栈stack

  //这样就实现了直接的修改 而不用使用 = 来传递新地址给mySb 看下面的测试             mySb Replace( t a );            Console WriteLine(mySb );            //果然 mySb 被成功修改了!            //Ps 以上代码虽然有些警告 但是可以运行 主要是专注于说明问题 忽略了一些细节 比如赋值了的变量未使用等问题 望见谅!

cha138/Article/program/net/201311/13532

相关参考

知识大全 编程中string是不是引用类型

  在msdn上  值类型主要由两类组成  结构  枚举  结构分为以下几类  Numeric(数值)类型  整型  浮点型  decimal  bool  用户定义的结构  也就是string属于引

知识大全 Java中的String、StringBuffer和Math类

Java中的String、StringBuffer和Math类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 String和stringBuffer类字符串的区别

String和stringBuffer类字符串的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 编写类String 的构造函数、析构函数和赋值函数

编写类String的构造函数、析构函数和赋值函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!已知

知识大全 利用基本数组类型搭建可自扩展的数组类

  publicclassChenqiArray    /**  *@paramargs  */  publicstaticvoidmain(String[]args)  //TODOAutogene

知识大全 Java当中的String数据类型

Java当中的String数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  java中St

知识大全 全面解析Java中的String数据类型

全面解析Java中的String数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先Str

知识大全 在.NET程序中正确使用String类型[2]

在.NET程序中正确使用String类型[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 在.NET程序中正确使用String类型[1]

在.NET程序中正确使用String类型[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 对非String类型进行校验时的出错处理

对非String类型进行校验时的出错处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关于Spri