Previous Page
Next Page

Chapter 16 Quick Reference

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); 
    }
 
    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 event.

Use parentheses exactly as if the event were a method. You must supply 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(); 
        } 
    } 
    ... 
} 

Previous Page
Next Page