Введение в коллекции в функциях C#
Один и тот же алгоритм часто нужно выполнить над разным набором данных: напечатать элементы, посчитать сумму, найти значение по ключу. Если каждый раз копировать цикл в основной код, программа разрастается, а исправления приходится повторять во многих местах.
Коллекцию можно передать в функцию параметром: вызывающий код
передает имя переменной с массивом, списком, словарем или множеством,
а тело функции работает с этими же данными под своим именем параметра.
Так же функция может вернуть новую коллекцию через return,
если результат нужно собрать отдельно и использовать дальше в программе.
Массивы, списки, словари и множества в C# - ссылочные типы. В параметр попадает не копия всех элементов, а копия ссылки на один и тот же объект в памяти.
Если функция меняет элемент по индексу, добавляет строку в список или записывает пару в словарь, вызывающий код видит эти изменения. Если внутри функции параметру присвоить другую коллекцию (новый массив или новый список), изменится только локальное имя параметра, а внешняя переменная по-прежнему укажет на старый объект.