string 范例是C#的基元范例之一,它是一个援用范例,对应FCL中的System.String范例。string 范例和平常的援用范例比拟有什么样的相同点和不同点呢?
1、字符串具有牢固不变性,字符串存在于System.String定名空间下,经由过程反编译东西我们能够看到:
字符串中只要两个只读的属性,没有可设置的属性,所以说string 范例的实例具有牢固不变性。只如果改变了字符串的内容,体系就会在堆内存中生成一个全新的字符串。实在这一点并不能算作是字符串的特殊性,这和平常的援用范例没什么区分,只是string范例在定义的时刻,没有建立能够写的属性,所以这只能算作是字符串的平常特征。
演示代码以下:
class Program { static void Main(string[] args) { string str1 = "Hi"; string str2 = str1; str2 = "Hello"; //这个操纵相当于给实例str2从新new了一个实例 Console.WriteLine("str1的值为:{0}", str1); Console.WriteLine("str2的值为:{0}", str2); Console.ReadKey(); } }
运转效果以下:
2、字符串中驻留池的观点,这是string范例特有的,所以这是字符串的特殊性。当我们声明的字符串和堆中已存在的某个字符串的值一样时,不会再在堆中拓荒空间,建立新的实例,而是将当前声明字符串的援用指向已存在的实例。
以上就是C#中字符串的平常性和特殊性细致引见(图文)的细致内容,更多请关注ki4网别的相干文章!