字符串是值类型或引用类型

本文关键字:引用类型 类型 字符串 | 更新日期: 2023-09-27 18:20:29

我对字符串(引用类型或值类型)有一些困惑,我有两个字符串类型的变量,我将值分配给第一个变量,然后将相同的变量分配给第二个变量?

        string string1 = "abc";
        string string2 = string1;
        string1 = "xyz";

这里字符串1是保存值xyz,字符串2是abc

字符串是值类型或引用类型

下面是发生的事情:

string string1 = "abc";

string1是对字符串"abc"的引用,该字符串位于某个堆中。

string string2 = string1;

string2是另一个引用,恰好指向与string1相同的内存位置。使用赋值运算符时,该引用已复制到string2。现在有两个变量指向内存中的同一位置。

string1 = "xyz";

string1现在指向一个新创建的字符串,该字符串包含"xyz"。string2仍然指向"abc",它仍然可访问并且不会被垃圾收集。

无论如何,是的;字符串是一种引用类型。