字符串的一般性和特殊性

  string
类型是C#的基元类型之1,它是1个引用类型,对应FCL中的System.String类型。string
类型和普通的引用类型比较有啥样的相同点和区别点呢?

  1、字符串具备固定不改变性,字符串存在于System.String命名空间下,通过反编写翻译工具我们得以见到:

 图片 1

字符串中只有只读的特性,未有可安装的天性,所以说string
类型的实例具备固定不改变性。只借使改变了字符串的内容,系统就能够在堆内部存款和储蓄器中生成2个斩新的字符串。其实那或多或少并无法算作是字符串的特殊性,那和平时的引用类型没什么分化,只是string类型在概念的时候,未有开创能够写的属性,所以那不得不算作是字符串的形似特性。

 演示代码如下:

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string str1 = "Hi";
 6             string str2 = str1;
 7             str2 = "Hello"; //这个操作相当于给实例str2重新new了一个实例
 8       
 9             Console.WriteLine("str1的值为:{0}", str1);
10             Console.WriteLine("str2的值为:{0}", str2);
11             Console.ReadKey();
12         }
13     }

运作结果如下:

图片 2

  二、字符串中驻留池的定义,那是string类型特有的,所以那是字符串的特殊性。当大家注解的字符串和堆中已存在的有些字符串的值一样时,不会再在堆中开拓空间,创立新的实例,而是将最近申明字符串的引用指向已经存在的实例。

 图片 3

 

相关文章