Delegates — type-safe function pointers. Events — notification mechanism.
Delegates:
1// Custom delegate2public delegate int MathOperation(int a, int b);34// Usage5MathOperation add = (a, b) => a + b;6int result = add(5, 3); // 8
Built-in delegates:
1Func<int, int> square = x => x * x;2Action<string> print = Console.WriteLine;3Predicate<int> isPositive = x => x > 0;
Events:
1public class Button2{3 public event EventHandler Clicked;45 public void OnClick()6 {7 Clicked?.Invoke(this, EventArgs.Empty);8 }9}1011// Subscribe12button.Clicked += (sender, args) => Console.WriteLine("Clicked!");
Best practices: