Анонимная функция в C# — это функция без названия, которая позволяет объявить и определить функцию прямо в месте её использования. Анонимные функции могут быть очень полезны для создания компактного кода и для передачи блоков кода в качестве аргументов методам, принимающим делегаты или выражения. ### В C# существует два основных типа анонимных функций ##### 1. Лямбда-выражения [[Лямбда-выражение (lambda expression)]] ##### 2. Анонимные методы Анонимные методы (anonymous methods) - старый способ объявления анонимных функций, введён в C# 2.0. Они предоставляют способ создания делегатов без необходимости явного определения метода. **Пример анонимного метода:** ```csharp Func<int, int> square = delegate(int x) { return x * x; }; Console.WriteLine(square(5)); // Выводит 25 ``` Анонимный метод без параметров: ```csharp Action greet = delegate { Console.WriteLine("Hello, World!"); }; greet(); // Выводит "Hello, World!" ``` ### Производительность Анонимные функции в C# компилируются в обычные методы, так что их производительность сопоставима с производительностью явно объявленных методов. Однако, стоит учитывать некоторые моменты: - Частое создание анонимных функций может привести к незначительным накладным расходам при выполнении из-за дополнительных вызовов делегатов. - Захват переменных (closure) в лямбда-выражениях или анонимных методах может привести к дополнительным расходам памяти, так как для этих переменных требуется создавать дополнительные объекты для поддержки их доступности внутри анонимной функции.