举例讲解C#编程中委托的实例化使用

2019-12-30 11:35:15王振洲

输出:


Paperback Book Titles:
  The C Programming Language
  The Unicode Standard 2.0
  Dogbert's Clues for the Clueless
Average Paperback Book Price: $23.97

可靠编程
声明委托。
下面的语句声明一个新的委托类型。


public delegate void ProcessBookDelegate(Book book);

每个委托类型都描述参数的数目和类型,以及它可以封装的方法的返回值类型。每当需要一组新的参数类型或新的返回值类型时,都必须声明一个新的委托类型。
实例化委托。
声明了委托类型后,必须创建委托对象并使之与特定方法关联。在上一个示例中,您通过按下面示例中的方式将 PrintTitle 方法传递到 ProcessPaperbackBooks 方法来实现这一点:


bookDB.ProcessPaperbackBooks(PrintTitle);

这将创建与静态方法 Test.PrintTitle 关联的新委托对象。类似地,对象 totaller 的非静态方法 AddBookToTotal 是按下面示例中的方式传递的:


bookDB.ProcessPaperbackBooks(totaller.AddBookToTotal);

在两个示例中,都向 ProcessPaperbackBooks 方法传递了一个新的委托对象。
委托创建后,它的关联方法就不能更改;委托对象是不可变的。
调用委托。
创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:


processBook(b);

与本例一样,可以通过使用 BeginInvoke 和 EndInvoke 方法同步或异步调用委托。



注:相关教程知识阅读请移步到c#教程频道。