字符串数组在C#中是不可变的吗?

字符串数组在C#中是不可变的吗?,c#,arrays,C#,Arrays,我有点困惑。我知道字符串是不可变的,但是字符串数组呢 每当我向空数组中添加一些内容时,它是否会创建该数组的新实例 那我什么时候换东西呢 string[] array = new string[5]; array[0] = "my favourite string"; //does it create a new instance of the array here? array[0] = "changed that"; //how about now? 这是您代码的详细信息 IL_0000:

我有点困惑。我知道字符串是不可变的,但是字符串数组呢

每当我向空数组中添加一些内容时,它是否会创建该数组的新实例

那我什么时候换东西呢

string[] array = new string[5];

array[0] = "my favourite string"; //does it create a new instance of the array here?
array[0] = "changed that"; //how about now?
这是您代码的详细信息

IL_0000:  nop         
IL_0001:  ldc.i4.5    
IL_0002:  newarr      System.String
IL_0007:  stloc.0     // array
IL_0008:  ldloc.0     // array
IL_0009:  ldc.i4.0    
IL_000A:  ldstr       "my favourite string"
IL_000F:  stelem.ref  
IL_0010:  ldloc.0     // array
IL_0011:  ldc.i4.0    
IL_0012:  ldstr       "changed that"
IL_0017:  stelem.ref  
IL_0018:  ret

正如您所看到的,该数组只有一次

数组不是不可变的。数组实例(及其内存)是在此行使用
new
运算符
string[]Array=new string[5]时创建的,您可以查看详细信息谢谢!对于这些初学者的问题,我深表歉意。在中有不可变的集合,所以要尽可能地挑剔:任何空数组都是不可变的,而且它本身可能是有用的。但任何非空数组都是可变的。