3.0Kпросмотров
46.6%от подписчиков
23 января 2026 г.
📷 ФотоScore: 3.4K
✔️ C# может прокачать collection expressions: “аргументы при создании коллекции” Есть прикольное предложение в csharplang: сделать так, чтобы в collection expressions ([a, b, c]) можно было передавать аргументы в создание коллекции. Проблема сейчас:
Postgres-стайл удобный синтаксис уже есть: List<int> xs = [1, 2, 3]; Но если тебе важно задать, например, capacity (чтобы не было лишних realloc внутри списка), то приходится писать “старым способом”: var xs = new List<int>(capacity: 32) { 1, 2, 3 }; Предлагаемое решение:
добавить возможность передавать аргументы прямо в collection expression: List<int> xs = [args(capacity: 32); 1, 2, 3]; То есть:
- args(...) - это аргументы для конструктора / create-метода
- после ; - элементы коллекции Зачем это нужно:
- можно сохранить суперкороткий синтаксис [ ... ]
- но при этом контролировать создание коллекции (capacity, comparer и т.д.)
- меньше лишних аллокаций → быстрее в hot-path коде Если фича дойдёт до релиза, это будет реально удобный апгрейд синтаксиса коллекций в C#. https://github.com/dotnet/csharplang/blob/main/proposals/collection-expression-arguments.md