字符串数组在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]时创建的代码>,您可以查看详细信息谢谢!对于这些初学者的问题,我深表歉意。在中有不可变的集合,所以要尽可能地挑剔:任何空数组都是不可变的,而且它本身可能是有用的。但任何非空数组都是可变的。