举一个简单明了的例子:
定义一个BookManager,里面含有一个delegate类型
class BookManager
{
<span style="color:#ff0000;"> public delegate void BookChangedHandler(Book b);</span>
List<Book> books = new List<Book>();
public BookChangedHandler bookChangedHandler;
public void init()
{
addBook(new Book("this is a new book!"));
}
public void addBook(Book b)
{
books.Add(b);
<span style="color:#ff0000;"> if(bookChangedHandler!= null)
{
bookChangedHandler(b);
}</span>
}
}
<pre name="code" class="csharp">{
manger = new BookManager();
<span style="color:#ff0000;">manger.bookChangedHandler += new BookManager.BookChangedHandler(BookAdded);
manger.bookChangedHandler += new BookManager.BookChangedHandler(BookAdded1);</span>
manger.init();
}
private void BookAdded1(Book b)
{
Console.WriteLine("add books1 ; " + b.name); ;
}
private void BookAdded(Book b)
{
Console.WriteLine("add books ; " + b.name);
}