TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #257 2.3K
Новые выражения коллекций в .NET 8

C# 12 привнёс лаконичный синтаксис для инициализации коллекций, открыв много новых возможностей.

1️⃣ Квадратные скобки

Теперь списки, массивы, спаны и прочее можно объявлять как в JavaScript!

Правда, в случае переменных нужно обязательно указывать target type:

int[] intArray = [1, 2, 3];
List<int> intList = [4, 5, 6];
ImmutableArray<object> emptyCollection = [];


Это работает и для свойств, полей, параметров методов и так далее.

2️⃣ Развёртка коллекции

Опять же, подобное уже было в JavaScript - оператором .. можно несколько коллекций соединять в один плоский массив:

string[] vowels = ["a", "e", "i", "o", "u"];
string[] consonants = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "z"];
string[] alphabet = [.. vowels, .. consonants, "y"];


3️⃣ Поддержка пользовательских типов данных

Если у вас есть свой тип данных, для которого хочется подключить выражения коллекций, то необходимо сделать три вещи:

✅ Реализовать интерфейс IEnumerable<T>
✅ Написать статический класс билдер с фабричным методом, который создаёт объект вашего типа из коллекции
✅ Пометить тип атрибутом [CollectionBuilder], указав класс строитель и имя фабричного метода

Подробнее можно прочитать по ссылке
Docs Collection expressions (Collection literals) - C# reference Collection expressions convert to many collection types. You can write literal values, expressions, or other collections to create a new collection.
  • 👍 25
  • ❤‍🔥 3
  • ❤ 2
  • 🔥 2
  • 🐳 1
More from @steponeit
  1. Sep 29, 2026Рассказал как автоматизировал сборку лексера компилятором для своего языка программировани…
  2. Sep 28, 2026Пошутил про джавистов в прямом эфире 😅 Шарпизм победил окончательно и бесповоротно!
  3. Sep 27, 2026Post #860
  4. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  5. Sep 22, 2026Post #858
  6. Sep 21, 2026Post #857
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 →