Делает ли разделение массива с помощью Index/Range создание копии массива

С C# 8.0 видя введение структур Index а также Range Теперь мы можем легко получить кусок массива, что-то вроде

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

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

Копирует ли массив, как этот, массив? Или делает это без копирования, как ArraySegment<T>?

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

Мы можем сделать вывод, что массив скопирован.

Другие вопросы по тегам