• Программинг

Нужны источники бесперебойного питания?

Источники бесперебойного питания от дизельстор

Локальные функции в C# через анонимный метод

Сегодня на форуме SQL.RU подсмотрел интересный код, который решает проблему использования локальных методов. Локальные методы — методы, которые находятся в других методах. C# не позволяет использовать следующую конструкцию:

01 class MyClass
02 {
03     public int MyFunc()
04     {
05         public int MyFunc2(int x, int y)
06         {
07               return x + y;
08         }
09           
10         return MyFunc2(2,3);
11     }
12 }

Такой код компилятор просто не пропустит. Решение этой задачи кроется в использовании анонимных методах, основанных на делегатах и лямбда-выражений. Следующий код демонстрирует решение задачи:

01 class MyClass
02 {
03     public delegate int MyDelegate(int param1, int param2);
04  
05     public int MyFunc()
06     {
07         MyDelegate sum = (x, y) =>
08         {
09             return x + y;
10         };
11         return sum(1, 3);
12     }
13 }

Вот так… Учим делегаты, анонимные методы и лямбда-выражения.