Приветствую всех, сегодня рассмотрим примеры и определения анонимных методов.
Анонимный метод- это метод который не имеет имени и не принадлежит ни какому классу.
Анонимная функция – это оператор или выражение «inline«, которое можно использовать каждый раз, когда ожидается тип делегата. Ее можно использовать для инициализации
именованного делегата или подставить вместо типа именованного делегата в качестве параметра метода. Существует два типа анонимных функций, — это Лямбда-выражения и Анонимные методы. Анонимными являются методы, у которых нет имени. Это один из способов создать безымянный блок программы, который будет связан с конкретным делегатом, т. е. станет выполняться через делегата.
Чтобы написать анонимный метод, понадобится указать ключевое слово delegate, затем(необязательно) объявление параметра и наконец, тела метода. Ниже представлены два варианта вызова анонимного метода. Эта техника называется предположения делегата.
1 2 3 4 5 6 7 8 9 10 |
delegate int Anonim(int x , int y, int w); static void Main(string[] args) { Anonim a = delegate (int x, int y, int w) { return (x + y + w) / 3; }; Console.WriteLine(a(2,3,4)); Console.ReadKey(); } |
И с помощью лямбда-выражения
1 2 3 4 5 6 7 8 9 |
private delegate double Anonim(int a, int b, int c); static void Main() { Anonim del = (a, b, c) => (double)(a + b + c) / 3; Console.WriteLine("Среднее арифметическое введенных числел {0:##.###}", del(2, 3, 4)); Console.ReadKey(); } |
Когда компилятор встречает ключевое слово delegate с круглыми скобками, в которых может быть или отсутствовать список параметров, а за ключевым словом идет открывающая фигурная скобка, он знает, что начался анонимный метод. Блок исполняемых команд — это команды, заключенные в фигурные скобки. Блок должен обязательно заканчиваться точкой с запятой, как обычный оператор. Когда компилятор находит ключевое слово delegate в теле метода, он ожидает, что за ним последует тело анонимного метода. Анонимный
метод можно присвоить ссылке на делегат. Заметим также, что можно использовать оператор += , чтобы заставить экземпляр делегата ссылаться на несколько методов сразу (не важно, анонимных или нет).