Новые выражения коллекций в .NET 8
C# 12 привнёс лаконичный синтаксис для инициализации коллекций, открыв много новых возможностей.
1️⃣ Квадратные скобки
Теперь списки, массивы, спаны и прочее можно объявлять как в JavaScript!
Правда, в случае переменных нужно обязательно указывать
Это работает и для свойств, полей, параметров методов и так далее.
2️⃣ Развёртка коллекции
Опять же, подобное уже было в JavaScript - оператором
3️⃣ Поддержка пользовательских типов данных
Если у вас есть свой тип данных, для которого хочется подключить выражения коллекций, то необходимо сделать три вещи:
✅ Реализовать интерфейс
✅ Написать статический класс билдер с фабричным методом, который создаёт объект вашего типа из коллекции
✅ Пометить тип атрибутом
Подробнее можно прочитать по ссылке
C# 12 привнёс лаконичный синтаксис для инициализации коллекций, открыв много новых возможностей.
Теперь списки, массивы, спаны и прочее можно объявлять как в JavaScript!
Правда, в случае переменных нужно обязательно указывать
target type
:int[] intArray = [1, 2, 3];
List<int> intList = [4, 5, 6];
ImmutableArray<object> emptyCollection = [];
Это работает и для свойств, полей, параметров методов и так далее.
Опять же, подобное уже было в 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"];
Если у вас есть свой тип данных, для которого хочется подключить выражения коллекций, то необходимо сделать три вещи:
IEnumerable<T>
[CollectionBuilder]
, указав класс строитель и имя фабричного методаПодробнее можно прочитать по ссылке