C#-string类型是引用类型的证明

2016年,作为实习生在公司,一位前辈问我这样一个问题:

string类型是引用类型么?为什么它的使用方法那么像值类型?它也没有new等引用类型的特征,你如何证明它是引用类型?

很有意思的一个问题,我后来专门以一封邮件作为了回复。


string 类型 是 引用类型

string类型与stringbuilder类型很像,类似数组与集合的某些相对属性。在小型化上string更快速和只读,大量数据上面stringbuilder才能体现性能上的优势。

  1. 首先,string类型为什么不需要用new,谁说不需要的= =!作为object的子类型很显然是需要new的,String str=new String(new char[]{‘a’,‘b’,‘c’,‘d’}); 完全是没问题的。string类型是使用范围和频率很大的一个基类,都知道它是char字符一个个拼接起来的字符串,但是很不方便,所以就简化为:String str=“abcd”; 至于如何简化实现的我不甚了了。
  2. string类型是引用,是指向Unicode字符数组的指针,每一次赋新值都会开辟一块新的空间(这应该是在大数据量上性能不如stringbuilder的主要原因吧),值类型则只是在原先基础上进行修改。至于string
    a;string b;b=a;b=“”;的引用问题,因为string类型不同于stringbuilder,不可变的,赋值时候如果内存中有相同的值它就会指向这一个,但是如果修改后的结果是新的没有相同的,那就是一个新的赋值,并不影响原先的引用(这应该是说它具有值类型特征的原因)。

在这里插入图片描述

time:2016-11-9


猜你喜欢

转载自blog.csdn.net/long870294701/article/details/84332507