为什么string是不可变的,而stringbuilder是不可变的

时间:2015-03-30 14:37:30

标签: c# .net

我不明白这个字符串是不可变的区别,而string.builder在c#中是不可变的。我只是想告诉你我知道英语中不可变和可变的含义,但在c#语言中却不理解,因为我们可以改变字符串这样的地方是不可变的概念吗?

string a = "hello";
a="hello"+"world";
Console.WriteLine(a);

是否有任何我通过示例阅读和理解的文章 非常感谢你的回复。

1 个答案:

答案 0 :(得分:2)

你没有"改变"原始字符串 - 您正在创建字符串。通过不可变,它意味着像这样的事情:

a.ToUpper();

不要修改a - 他们返回一个新字符串,所以

b = a.ToUpper();

ba是不同的字符串。

在您的示例中,

string a = "hello";
a="hello"+"world";
Console.WriteLine(a);

a变量,在第二行执行后引用 new 字符串。