* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Локальные функции
6 февраля 2009
Это функции, определённые внутри других функций, подобный механизм реализован в Delphi, а в C# хоть и нет локальных функций, но есть лямбда-выражения, о которых речь пойдёт дальше, а пока рассмотрим как они позволяют определить локальную функцию:
static void Main(string[] args) { Func<int, int, long> Factorial = null; Factorial = (n, a) => n > 1 ? Factorial(n-1, a*n) : a;
for (int i=0; i<10; i++) Console.WriteLine("{0}! = {1}", i, Factorial(i, 1)); Console.ReadLine(); }
Этот код эвивалентен коду из пункта №1, но, обрати внимание, функция Factorial стала локальной!