我关注了一个关于2011年之前的旧回答的评论:不可变字符串。
在那里声称这段代码
在内存中创建了10个字符串:
虽然我理解为什么会发生这种情况,但我仍然无法理解为什么首先会有一个“”字符串。有人可以给我提示吗?也许这甚至不是问题所在? C#文档对这个问题没有任何说明。 我唯一的猜测是,C#的字符串是一个引用类型,因此默认情况下它是
string str="a";
str +="b";
str +="c";
str +="d";
str +="e";
console.write(str) //output: abcde
在内存中创建了10个字符串:
"", "a", "b", "c", "d", "e", "ab", "abc", "abcd", and "abcde"
虽然我理解为什么会发生这种情况,但我仍然无法理解为什么首先会有一个“”字符串。有人可以给我提示吗?也许这甚至不是问题所在? C#文档对这个问题没有任何说明。 我唯一的猜测是,C#的字符串是一个引用类型,因此默认情况下它是
null
,但是...在这个例子中,它在最开始就获得了一个值,所以我感到有些困惑。
""
被分配。 - TheGeneral""
在内的10个字符串的假设只是一条没有任何证据支持的注释。我想知道这是否可以被认为是理所当然的。 - Mong Zhu