是否使用索引/范围对数组进行切片会创建数组的副本

时间:2019-05-24 09:03:04

标签: arrays performance c#-8.0 .net-core-3.0

借助C#8.0看到结构IndexRange的引入,我们现在可以轻松地像执行类似的操作获取数组的一部分

string[] baseArray = {"a","b", "c", "d", "e", "f"};

var arr = baseArray[1..^2];

像这样切片一个数组会复制该数组吗?还是不像ArraySegment<T>那样进行复制?

1 个答案:

答案 0 :(得分:1)

亲自尝试:

string[] baseArray = { "a", "b", "c", "d", "e", "f" };
var arr = baseArray[1..^2];
Debug.WriteLine(arr[0]);
Debug.WriteLine(baseArray[1]);
arr[0] = "hello";
Debug.WriteLine(arr[0]);
Debug.WriteLine(baseArray[1]);

输出

b
b
hello
b

我们可以得出结论,数组已复制。

相关问题