Оператор spread
Внутри выражения коллекции
запись ..коллекция разворачивает элементы
массива или другой поддерживаемой коллекции
на месте. Между фрагментами можно ставить
отдельные значения - так собирают новый массив
из частей.
Синтаксис
тип[] имя = [..источник, элемент, ..другой];
Пример
Давайте объединим два массива с числом 0
между ними:
using System;
class Program
{
static void Main()
{
int[] left = {1, 2};
int[] right = {4, 5};
int[] res = [..left, 3, ..right];
Console.WriteLine(string.Join(" ", res));
}
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте скопируем массив через .. в новый:
using System;
class Program
{
static void Main()
{
int[] src = {1, 2, 3, 4, 5};
int[] copy = [..src];
Console.WriteLine(string.Join(" ", copy));
}
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте добавим элемент в начало через
spread:
using System;
class Program
{
static void Main()
{
int[] tail = {2, 3, 4, 5};
int[] res = [1, ..tail];
Console.WriteLine(res[0]);
Console.WriteLine(res.Length);
}
}
Результат выполнения кода:
1
5
Пример
Давайте соберём строковый массив из двух частей:
using System;
class Program
{
static void Main()
{
string[] head = {"a", "b"};
string[] tail = {"d", "e"};
string[] res = [..head, "c", ..tail];
Console.WriteLine(string.Join("", res));
}
}
Результат выполнения кода:
"abcde"