Code
csharp
using System;
public delegate void Notify(string message);
public class Button
{
// Event restricts external invocation
public event Notify? Clicked;
public void Click()
{
Console.WriteLine("Button.Click raising event");
Clicked?.Invoke("clicked at " + DateTime.Now.ToShortTimeString());
}
}
class Program
{
static void Main()
{
var btn = new Button();
// Subscribe with named methods
btn.Clicked += OnClickLog;
// Subscribe with lambda
btn.Clicked += msg => Console.WriteLine($"[lambda] {msg}");
btn.Click();
btn.Clicked -= OnClickLog; // unsubscribe
btn.Click();
}
static void OnClickLog(string message) =>
Console.WriteLine($"[logger] {message}");
}