为什么在C#中字符串类型不能用作引用类型
我在C#控制台应用程序中有以下代码:为什么在C#中字符串类型不能用作引用类型,c#,C#,我在C#控制台应用程序中有以下代码: string a = "1"; string b = a; a = "2"; Console.WriteLine(b); 我听说在C#中,字符串类型用作引用类型,但在上面的代码中,变量b仍然向我显示1,为什么它不向我显示2 因为您正在复制引用。字符串是不可变的,因此更改字符串的唯一方法是将其替换为其他字符串。这就是您使用a=“2”所做的 之后,内存中有两个字符串:“1”和“2”a指向后一个,但
string a = "1";
string b = a;
a = "2";
Console.WriteLine(b);
我听说在C#中,字符串类型用作引用类型,但在上面的代码中,变量b仍然向我显示1,为什么它不向我显示2 因为您正在复制引用。字符串是不可变的,因此更改字符串的唯一方法是将其替换为其他字符串。这就是您使用
a=“2”
所做的
之后,内存中有两个字符串:
“1”
和“2”
a
指向后一个,但是b
被分配了一份对“1”
的引用副本,所以当您打印出a
时,这就是您得到的结果,Stings是不可变的,工作方式与值类型类似,但不是(在内部它们确实是只读引用类型)。这是一些基本的东西,关于.NET的每个文档都在解释它。此外,字符串不能被继承。这很简单-字符串不能以任何方式更改。实际上,每个似乎改变字符串的函数都会创建一个新的字符串
有一个StringBuilder类可用于操作字符串
有关更多信息:
另请参见:您确切地说是在哪里听到的?