Delegate là một kiểu an toàn kiểu (type-safe) trỏ tới một hoặc nhiều method có cùng chữ ký.
Nó cho phép truyền method như một tham số — nền tảng của callback, event và LINQ.
csharp
Action<string> log = Console.WriteLine;
log("hello"); // gọi qua delegateMulticast: một delegate có thể giữ danh sách nhiều method (invocation list).
Dùng += để thêm, -= để bớt; khi gọi, tất cả chạy theo thứ tự đăng ký.
csharp
Action pipe = () => Console.Write("A");
pipe += () => Console.Write("B");
pipe(); // in "AB"Lưu ý: với delegate có giá trị trả về, multicast chỉ trả về kết quả của method cuối cùng (các kết quả trước bị bỏ).
Nếu một method trong chuỗi ném exception, các method còn lại không chạy. Func<>, Action<>, Predicate<> là các delegate dựng sẵn của .NET.