@wlastas

Почему у IImmutable_List/Stack/etc доступны методы Add/Remove/[аналоги] если они всё равно не работают?

Доброго #part_of_day#
Я понимаю про совместимость с базовыми интерфейсами и т.д, но ведь наличие публичных неработающих методов выглядит крайне странно и приводит к ошибкам .
Я вот как раз недавно в спешке добавил к классу, в котором находится Immutable коллекция новый метод, который добавлял новые элементы не к бильдеру, а к самой коллекции(тупо забыл как она реализована), и потом долго не мог понять почему 2 года работало и вдруг перестало.
Или может я как то не так делаю/понимаю?
У меня так:
static ImmutableList<Test>.Builder _test_builder = ImmutableList.CreateBuilder<Test>();
public static ImmutableList<Test> Tests => _test_builder.ToImmutable();
public static void RemoveTest(Test test) {
    _test_builder.Remove(test);
}
public static void AddTest(Test test) {
    _test_builder.Add(test);
}
public static void Main() {
    var nt = new Test(); //new Test
    Tests.Add(nt); //хрен 
    AddTest(nt); //ок
    Tests.Remove(nt); //хрен
    RemoveTest(nt);//ок
}
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
@wlastas Автор вопроса
правильный ответ от Foggy Finder

Смысл "неизменяемых" коллекций в том что они, внезапно, неизменяемые. Эти методы крайне полезны если нужно получить новую коллекцию на основе старой. Новая коллекция будет возвращена

var newCollection = collection.Add(someItem);

спс
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Методы Add/Remove/итд в Immutable коллекциях работают, причём именно так, как и должны - они создают копию оригинальной коллекции с изменениями.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Могу только предположить что это что бы не ломать код при изменении листов. Скорее всего это описано в документации, просто посмотрите внимательно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы