Локальные функции в C#
Локальными функциями в C# называют функции, которые определены внутри других методов. Как правило, локальная функция содержит действия, применяемые лишь в рамках ее метода.
Для примера давайте определим метод, сравнивающий сумму чисел 2-х массивов:
В нашем примере метод Compare принимает 2 массива, а потом последовательно вычисляет сумму элементов этих массивов, что позволяет узнать, в каком именно массиве сумма чисел будет больше. Да, все работает, но тут есть недостаток, который заключается в том, что повторяются действия, вычисляющие сумму массива:
А что будет, если мы пожелаем сравнивать сумму лишь положительных либо четных чисел или как-нибудь по другому изменить логику сравнения? Лучший выход -- вынос повторяющихся действий в отдельный метод. Но если данные действия больше нигде в программе вызываться не будут и станут применяться лишь в одном методе, то есть смысл определить данные действия в качестве локальной функции. Чтобы это реализовать, изменим метод Compare:
В результате мы вынесли подсчет суммы в локальную функцию Sum -- она принимает массив, возвращая его сумму. Далее, в рамках метода Compare можно ее задействовать в целях вычисления суммы массива. Причем неважно, определена ли локальная функция до либо после применения. Главное, что вне своего метода она использоваться не сможет.
По материалам https://metanit.com/sharp/tutorial/.