现在,对我来说,字符串一直是值类型。了解它们不是,实际上是所谓的不可变字符串非常有趣,但有一个非常重要的问题:
什么时候字符串不是不可变字符串?
看,当我声明这样的字符串时:
string testString = "abc";
堆栈现在应该保存变量声明,堆保存变量引用的值。如果我声明了第二个字符串:
string secondString = testString;
这两个变量现在应该引用堆上的相同位置。如果我这样做:
secondString = testString + "def";
堆上的值应该被复制、修改,第二个值应该位于堆上。
我明白这就是不可变字符串。
但由于这几乎是我一直声明和使用字符串的方式,我想知道是否有另一种方式,可变字符串,可以这么说。
绝地无双
相关分类