using System; public class AddandRemoveFunctions { static public void ButtonHandler(object sender, EventArgs e) { Console.WriteLine("Button clicked"); } public static void Main() { Button button = new Button(); button.AddClick(new Button.ClickHandler(ButtonHandler)); button.SimulateClick(); button.RemoveClick(new Button.ClickHandler(ButtonHandler)); } } public class Button { public delegate void ClickHandler(object sender, EventArgs e); private ClickHandler click; public void AddClick(ClickHandler clickHandler) { click += clickHandler; } public void RemoveClick(ClickHandler clickHandler) { click -= clickHandler; } protected void OnClick() { if (click != null) click(this, null); } public void SimulateClick() { OnClick(); } }