Объясните, пожалуйста, как это работает?
foreach (var productModel in productModels)
{
foreach (var barCode in productModel.BarCodes)
{
if (uniqueBarCodes.Contains(barCode))
{
productModel.BarCodes = productModel.BarCodes.Where(b => b != barCode).ToArray();
}
}
}
Почему изменяя productModel, меняется и изначальная коллекция?
Будет или не будет изменяться объект в коллекции productModels зависит от того, каким типом является ее элемент: ссылочным или значимым, если первым, то в переменную productModel попадает только ссылка на элемент, в коллекции также хранится только ссылка (это, по сути, указатель на область памяти, где хранится сам объект), естественно, что в этом случае Вы просто меняете объект, находящийся по ссылке. Если же тип значимый, то в productModel попадет копия объекта, тогда элемент коллекции productModels изменяться не будет. Изучите систему типов .NET, тогда таких вопросов у Вас не будет.
Про типы можно почитать здесь: https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/
Про ссылочные типы: https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/reference-types
Также, есть две неплохих статьи на Хабре: https://habrahabr.ru/sandbox/68552/ https://habrahabr.ru/post/113586/
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как создать кнопку Button, при нажатии на которую форма будет создавать новые экземпляры?
В своей программе, для упрощения кода, создал класс, куда запихнул все однотипные функцииТак вот, в этом классе есть свои объекты, у которых...
Добрый деньС помощью automapper пытался проецировать функции разных типов моделей
Есть 10 внешних библиотек, которые я подключаю к своему классуМожно ли как-нибудь сделать, чтобы при компиляции у меня получился 1 общий dll