Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpImIl 107 of 509 menu
◀ ▶

ImmutableList в C#

Класс ImmutableList ведёт себя как список, но каждая правка возвращает новый экземпляр. Старая ссылка при этом не меняется: список можно отдать другому коду, и тот не перепишет исходные элементы.

Новая версия не копирует все элементы подряд: общая часть хранится один раз для обеих версий. Поэтому добавление дешевле полного копирования массива, но дороже, чем добавление в обычный List<T>.

Добавим элемент к исходному списку и сравним длины. tags не изменился, extended содержит третий элемент:

using System.Collections.Immutable; ImmutableList<string> tags = ImmutableList.Create("a", "b"); ImmutableList<string> extended = tags.Add("c"); Console.WriteLine(tags.Count); // выведет 2 Console.WriteLine(extended.Count); // выведет 3

Соберите неизменяемый список из строк "paris" и "rome", добавьте "oslo" и выведите длину старого списка и нового.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить