English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Action - это тип делегата, определенный в пространстве имен System. Тип делегата Action аналогичен делегату Func, за исключением того, что делегат Action не возвращает значение. Иначе говоря, делегат Action можно использовать с методами, имеющими возвращаемый тип void.
Action<T> - это вбудованный гетерогенный делегат в .NET Framework, который можно использовать для передачи методов в виде параметра без необходимости явного объявления пользовательских делегатов. Обернутый метод должен соответствовать методу, определенному делегатом. То есть, обернутый метод должен иметь один параметр, передаваемый по значению, и не должен возвращать значение.
Например, следующий делегат распечатывает значение int.
public delegate void Print(int val); static void ConsolePrint(int i) { Console.WriteLine(i); {} static void Main(string[] args) { Print prnt = ConsolePrint; prnt(10); {}
10
Вы можете использовать делегат Action вместо вышеуказанного делегата Print, например:
static void ConsolePrint(int i) { Console.WriteLine(i); {} static void Main(string[] args) { Action<int> printActionDel = ConsolePrint; printActionDel(10); {}
Вы можете использовать ключевое слово new или напрямую назначить метод для инициализации делегата Action:
Action<int> printActionDel = ConsolePrint; //или Action<int> printActionDel = new Action<int>(ConsolePrint);
Делегат Action может принимать до 16 различных типов входных параметров.
Анонимный метод также можно分配 делегату Action, например:
static void Main(string[] args) { Action<int> printActionDel = delegate(int i) { Console.WriteLine(i); } printActionDel(10); {}
10
Лямбда-выражение также может использоваться с делегатом Action:
static void Main(string[] args) { Action<int> printActionDel = i => Console.WriteLine(i); printActionDel(10); {}
Таким образом, вы можете использовать любые методы, не возвращающие значения Action делегата.
Делегат Action принимает от 0 до 16 параметров и не возвращает значения.
Action означает делегат без параметров и без возвращаемого значения.
Action<int, string> означает делегат с传入ными параметрами int, string и без возвращаемого значения.
Action<int, string, bool> означает делегат с传入ными параметрами int, string, bool и без возвращаемого значения.
Action<int, int, int, int> означает делегат, который принимает 4 параметра типа int и не возвращает никакого значения.
Легко и быстро определить делегат.
Сокращение кода.
Совместимые типы во всем приложении.
Делегат Action аналогичен делегату Func, но делегат Action не возвращает никакого содержимого. Тип возвращаемого значения должен быть void.
Делегат Action может иметь от 0 до 16 входных параметров.
Делегат Action может использоваться с анонимными методами или lambda-выражениями.