TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2118 1.94K
День 1748. #ЧтоНовенького
Оператор Расширения для Коллекций в C# 12.

Выражения коллекций (также известные как литералы коллекций) — это новая функция C#12, которая добавляет в C# оператор расширения. Он позволяет объединить коллекции распространённых типов (массивы, диапазоны и списки) в одну. Кроме того, для типов коллекций изменён синтаксис, который упрощает код и помогает уменьшить его многословность.

Инициализация
В версиях до C#12 инициализация типа коллекции была довольно многословной, поскольку нам приходилось указывать тип, который мы инициализируем. Например, вот как инициализировать массив, диапазон и список целыми числами:

var a = new int[] { 1, 2, 3 };
var b = new Span<int>(new int[] { 2, 4, 5, 4, 4 });
var c = new List<int> { 4, 6, 6, 5 };

Новый синтаксис в C#12
Теперь мы можем использовать выражения коллекций. Мы объявляем переменную с типом коллекции, который хотим использовать, а затем заключаем значения в квадратные скобки:

int[] a = [1, 2, 3];
Span<int> b = [2, 4, 5, 4, 4];
List<int> c = [4, 6, 6, 5];

Это сокращает количество кода, и, как по мне, более читабельно выглядит.

Оператор расширения (spread)
Оператор расширения популярен в JavaScript для объединения и добавления значений к существующим типам коллекций. И наконец он появился в C#.

Чтобы использовать его, инициализируйте новый тип коллекции, а затем добавьте .. перед добавлением переменной типа коллекции.

int[] join = [..a, ..b, ..c];

Также можно добавлять дополнительные значения:

int[] join = [..a, ..b, ..c, 6, 5];

Не имеет значения, какие типы коллекций мы объединяем, а также не имеет значения, какой тип коллекции используется для переменной, имеющей оператор расширения. Мы можем использовать оператор расширения для объединения разных типов коллекций и объявлять переменную любым из этих типов коллекций:

int[] a = [1, 2, 3];
Span<int> b = [2, 4, 5, 4, 4];
List<int> c = [4, 6, 6, 5];

List<int> join = [..a, ..b, ..c, 6, 5];

Источник: https://www.roundthecode.com/dotnet-tutorials/collection-expressions-brings-spread-operator-csharp-12
  • 👍 52
More from @netdeveloperdiary
  1. Sep 28, 2026День 2798. #Оффтоп Утиная Типизация в C# с Помощью Перехватчиков. Часть 2 Некоторое время…
  2. Sep 27, 2026День 2797. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Окончание Начало Продол…
  3. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
  4. Sep 25, 2026День 2795. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Начало Проблема с позиц…
  5. Sep 24, 2026День 2794. #Оффтоп #Здоровье Сегодня будет необычный пост. Завтра в Москве стартует конфер…
  6. Sep 23, 2026День 2793. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →