Анонимные методы в C# 6.0

Анонимные методы предоставляют метод передачи кода в качестве параметра делегата.

Анонимные методы - это методы без имени, только тела.

Они были введены в C# 2.0, но в основном используются с лямбда выражениями.

Анонимный метод похож на лямбда выражение, за исключением того, что ему не хватает неявно типизированных параметров, синтаксиса выражений и возможности компиляции в дерево выражений.

Вам не нужно указывать тип возврата в анонимном методе; это выводится из оператора return внутри тела метода.

Как работают анонимные методы в C#?

Чтобы написать анонимный метод, вы включаете ключевое слово делегата, за которым следует объявление параметра, а затем тело метода.

delegate int Transformer (int i);

Мы могли бы написать анонимный метод, как показано ниже:

Transformer sqr= delegate (int x) {return x*x; };
Console.WriteLine (sqr(3));

Давайте перепишем его с помощью лямбда-выражения:

Transformer sqr= (int x) => {return x * x ; };

И

Transformer sqr = x => x * x ;

Уникальной особенностью анонимного метода является то, что вы можете опустить параметр, даже если делегат ожидает его.

Это может быть полезно при объявлении событий с пустым обработчиком по умолчанию:

public event EventHandler clicked = delegate {};

Он избегает необходимости нулевой проверки перед запуском события.

Пример:

using System;
delegate void NumberChanger(int n);
namespace DelegateAppl
{
   class TestDelegate
   {
      static int num = 10;
      public static void AddNum(int p)
      {
         num += p;
         Console.WriteLine("Named Method: {0}", num);
      }
      
      public static void MultNum(int q)
      {
         num *= q;
         Console.WriteLine("Named Method: {0}", num);
      }
      
      public static int getNum()
      {
         return num;
      }
      static void Main(string[] args)
      {
         //создавать экземпляры делегата с использованием анонимного метода
         NumberChanger nc = delegate(int x)
         {
            Console.WriteLine("Anonymous Method: {0}", x);
         };
         
         //вызов делегата с использованием анонимного метода
         nc(10);
         
         //создание экземпляра делегата с использованием названных методов
         nc =  new NumberChanger(AddNum);
         
         //вызов делегата с использованием названных методов
         nc(5);
         
         //создание экземпляра делегата с использованием других именованных методов
         nc =  new NumberChanger(MultNum);
         
         //вызов делегата с использованием названных методов
         nc(2);
         Console.ReadKey();
      }
   }
}

 

Источник: http://www.csharpstar.com/anonymous-methods-in-csharp6/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Adblock
detector