为什么string [0] ="new value"不能编译?

The*_*ask 2 .net c#

我如何按索引值为字符串设置新值?

我试过了:

string a = "abc"; 
a[0] = "A"; 
Run Code Online (Sandbox Code Playgroud)

不适用strings,但是是的chars.为什么?

Bil*_*eal 14

C#中的字符串(以及System.String在基类库中使用的其他.NET语言)是不可变的.也就是说,你不能用这种方式按字符修改字符串(或者就此而言,你可以修改字符串).

如果要根据索引修改字符串,则必须先使用它将其转换为数组System.String.ToCharArray().您使用System.String构造函数将其转换回字符串,传入已修改的数组.

您的示例必须更改为:

string a = "abc";
char[] array = a.ToCharArray();
array[0] = 'A'; //Note single quotes, not double quotes
a = new string(array);
Run Code Online (Sandbox Code Playgroud)


sup*_*cat 5

System.String类型不允许通过索引(或通过任何方式)来改变String变量的内容,必须用对全新的引用来替换它String.The System.Text.StringBuilder但是,type允许按索引编写.可以创建一个新System.Text.StringBuilder对象(可选地将字符串传递给构造函数),对其进行操作,然后使用其ToString方法将其转换回字符串.