English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Как следует из названия, анонимные методы - это методы без имени. В C# анонимные методы можно определить с помощью ключевого слова delegate и можно назначить им переменные типа delegate.
В анонимных методах не нужно указывать тип возвращаемого значения, он выводится из тела метода.
public delegate void Print(int value); static void Main(string[] args) { Print print = delegate(int val) { Console.WriteLine("Внутри анонимного метода. Значение: {0}", val); } print(100); }
Внутри анонимного метода. Значение: 100
Анонимные методы могут обращаться к переменным, определенным во внешней функции.
public delegate void Print(int value); static void Main(string[] args) { int i = 10; Print prnt = delegate(int val) { val += i; Console.WriteLine("Анонимный метод: {0}", val); } prnt(100); }
Анонимный метод: 110
Анонимные методы также можно передавать методам, принимающим делегат в качестве параметра.
В следующем примере PrintHelperMethod() использует первый параметр Print делегата:
public delegate void Print(int value); class Program { public static void PrintHelperMethod(Print printDel, int val) { val += 10; printDel(val); } static void Main(string[] args) { PrintHelperMethod(delegate(int val) { Console.WriteLine("Анонимный метод: {0}", val); }, 100); } }
Анонимный метод: 110
saveButton.Click += delegate(Object o, EventArgs e) { System.Windows.Forms.MessageBox.Show("Сохранение успешно!"); }
C# 3.0 ввел лямбда-выражения, которые также работают, как анонимные методы.
Он не может содержать прыжковые инструкции, такие как goto, break или continue.
Он не может доступ к внешним методам с параметрами ref или out.
Он не может拥有 или доступ к небезопасному коду.
Не может использоваться слева от оператора is.
Анонимные методы можно определить с помощью ключевого слова delegate
Анонимные методы должны быть присвоены делегату.
Анонимные методы могут доступ к внешним переменным или функциям.
Анонимные методы могут передаваться в качестве параметров.
Анонимные методы могут использоваться в качестве обработчиков событий.