c#中的string.insert不会覆盖它吗?

时间:2009-09-04 21:31:03

标签: c#

c#中的string.insert不会覆盖startindex中的字符吗?

6 个答案:

答案 0 :(得分:7)

  

例如,返回值   “abc”。插入(2,“XYZ”)是“abXYZc”。

所以,没有。

http://msdn.microsoft.com/en-us/library/system.string.insert.aspx

答案 1 :(得分:2)

插入仅添加。替换确实改变了。

编辑:正如其他人所指出的,字符串实际上是不可变的,因此两种方法都会返回初始字符串的副本。但是,操作的语义如上所述。

答案 2 :(得分:2)

没有。字符串是不可变的。 string.Insert返回带有插入值的新字符串。它不会改变旧字符串。

string newString = oldString.Insert(3, "foo);

oldString不会改变。但是“foo”现在是newString。

答案 3 :(得分:1)

c#中的字符串是不可变的。除了反射或不安全的代码之外,它们无法更改(你永远不应该这样做)。

字符串上的所有方法“修改”而非返回新字符串并进行适当的修改。

由于insert将一个字符串放在另一个字符串中,因此将字符串s1插入字符串s2的结果将是length s1.Lnegth + s2.Length的字符串,不会丢失任何字符。

答案 4 :(得分:1)

没有。它只是告诉它插入角色的位置,所以如果你有以下

string x = "ello".Insert(0, "h");

该字符串实际上是“hello”。

答案 5 :(得分:0)

不,绝对不是。

但最佳做法是使用StringBuilder而不是不可变字符串,如果你正在对正在进行的字符串进行更改。

Here's一个很好的概述。