Chapter16QuickReference To Do this Declare a delegate type. Write the keyword delegate, followed by the return type, followed by the name of the delegate type, followed by any parameter types. For example: delegate void Tick(); Invoke a delegate. Use the same syntax as a method call. For example: Tick m; . m(); Create an instance of a delegate. Use the same syntax you use for a class or struct: write the keyword new, followed by the name of the type (the name of the delegate), followed by the argument between parentheses. The argument must be a method whose signature exactly matches the signature of the delegate. For example: delegate void Tick(); private void Method() { . } . Tick m = new Tick(this.Method); Declare an event. Write the keyword event, followed by the name of the type (the type must be a delegate type), followed by the name of the event. For example: delegate void TickHandler(); class Ticker { public event TickHandler Tick; } Subscibe to an event. Create a delegate instance (of the same type as the event), and attach the delegate instance to the event by using the += operator. For example: class Clock { . public void Start() { ticker.Tick += new TickHandler (this.RefreshTime); To Do this } private void RefreshTime() { . } private Ticker ticker = new Ticker(); } You can also get the compiler to automatically generate the new delegate by just specifying the subscribing method: public void Start() { ticker.Tick += this.RefreshTime; } Unsubscribe from an event. Create a delegate instance (of the same type as the event), and detach the delegate instance from the event by using the –= operator. For example: class Clock { . public void Stop() { ticker.Tick - = new TickHandler (this.RefreshTime); } private void RefreshTime() { . } private Ticker ticker = new Ticker(); } Or: public void Stop() { ticker.Tick -= this.RefreshTime; } Raise an Use parentheses exactly as if the event were a method. You must supply To Do this event. arguments to match the type of the event. Don't forget to check whether the event is null. For example: class Ticker { public event TickHandler Tick; . private void Notify() { if (this.Tick != null) { this.Tick(); } } . } . Chapter 16 Quick Reference To Do this Declare a delegate type. Write the keyword delegate,