В C# 15 появится возможность передавать аргументы в конструктор или фабричный метод коллекции прямо внутри выражения коллекции — через элемент
with(...).Раньше, если нужно было создать
List<string> с заданной ёмкостью или HashSet<string> с нестандартным компаратором, приходилось делать это отдельно. Теперь всё пишется в одну строку:// Задаём начальную ёмкость списка
List<string> names = [with(capacity: values.Length * 2), .. values];
// Передаём компаратор в HashSet
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// В set окажется один элемент — все строки равны при OrdinalIgnoreCase
with(...) должен быть первым элементом в выражении коллекции.Фича полезна там, где важна производительность: можно сразу зарезервировать нужный размер буфера и избежать лишних реаллокаций.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view