Action là một delegate kiểu generic đại diện cho phương thức không trả về giá trị (void) và có thể nhận từ 0 đến 16 tham số. Được định nghĩa trong namespace System.
Khai báo và sử dụng
// Action với 1 tham số int
Action del = Display;
// Phương thức khớp chữ ký
public static void Display(int val)
{
Console.WriteLine(val);
}
// Gọi delegate
del(2); // Xuất: 2
Mã nguồn hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
Action del = Display;
del(2);
}
public static void Display(int val)
{
Console.WriteLine(val);
}
}
Kết quả
2
Các biến thể Action
| Delegate | Tham số | Trả về |
Action | 0 | void |
Action<T> | 1 | void |
Action<T1, T2> | 2 | void |
| ... | ... | ... |
Action<T1...T16> | 16 | void |
So sánh Action vs Func vs Predicate
| Delegate | Trả về | Dùng cho |
Action<...> | void | Thực hiện hành động (side effect) |
Func<..., TResult> | TResult | Tính toán, chuyển đổi, trả về giá trị |
Predicate<T> | bool | Kiểm tra điều kiện (filter) |
Ứng dụng phổ biến
- Callback, event handler
- Tham số phương thức (strategy pattern)
- Logging, debugging
List.ForEach(Action<T>), Parallel.ForEach