知识大全 关于.NET的委托[1]

Posted 类型

篇首语:进学致和,行方思远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于.NET的委托[1]相关的知识,希望对你有一定的参考价值。

关于.NET的委托[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   NET学习中 你碰到过委托吗?我接触 NET几个月以来 关于委托的确花了我好长时间才弄明白 这里我就C#中的委托给大家介绍一下 (先说定义和特征 然后用例子说明)

  委托是回调函数的类型安全包装 C++编写的非托管程序进行回调时很容易出错 由于委托的存在 托管应用程序不会出现这样的情况 委托通常用来定义响应事件的回调方法的签名

  C#中的委托类似于C或C++中的函数指针 使用委托使程序员可以将方法引用封装在委托对象内( 所以这里的 引用 不是原始内存地址 而是包装了方法的内存地址的委托实例 ) 然后可以将给委托对象传递可调用所引用方法的代码 而不必在编译时知道将调用哪个方法 与C或C++中的函数指针不同 委托是面向对象 类型安全的 并且是安全的

  委托声明定义一种类型 它用一组特定的参数以及返回类型封装方法

  对于静态方法 委托对象封装要调用的方法

  对于实例方法 委托对象同时封装一个实例和该实例上的一个方法

  如果你有一个委托对象和一组适当的参数 则可以用这些参数调用该委托

  委托的一个有趣且有用的属性是 它不知道或不关心自己引用的对象的类 任何对象都可以 知识方法的参数类型必须与委托的参数类型和返回类型相匹配 这是的委托完全适合 匿名 调用

  到现在已经说得不少了 现在开始用例子说明如何声明 实例化和调用委托

  下面的示例中 BookDB 类封装一个书店数据库 它维护一个书籍数据库 它公开 ProcessPaperbackBooks 方法 该方法在数据库中查找所有平装书 并为每本书调用一个委托 所使用的 delegate 类型称为 ProcessBookDelegate Test 类使用该类输出平装书的书名和平均价格 委托的使用促进了书店数据库和客户代码之间功能的良好分隔 客户代码不知道书籍的存储方式和书店代码查找平装书的方式 书店代码也不知道找到平装书后将对平装书进行什么处理

 // bookstore csusing System;

//此命名空间中的几个类用以维护书籍数据库:namespace Bookstore    using System Collections;

   // 描述数据库中每一本书具有的属性:   public struct Book         public string Title;        // 书的题目       public string Author;       // 书的作者       public decimal Price;       // 书的价格       public bool Paperback;      // 是不是平装书?

      public Book(string title string author decimal price bool paperBack)               Title = title;         Author = author;         Price = price;         Paperback = paperBack;        

   // 为处理平装书的类声明一个委托类型(delegate类型):   public delegate void ProcessBookDelegate(Book book);

   // 维护书籍的数据库    public class BookDB         // 数据库中所有书籍的清单:      ArrayList list = new ArrayList();  

      // 向数据库中添加一本书:      public void AddBook(string title string author decimal price bool paperBack)               list Add(new Book(title author price paperBack));     

      // 对于每一本平装书调用ProcessBookDelegate这个委托 以对平装书进行处理:       public void ProcessPaperbackBooks(ProcessBookDelegate processBook)               foreach (Book b in list)                      if (b Paperback)            // Calling the delegate:               processBook(b);                 

// 使用Bookstore命名空间里的类:namespace BookTestClient    using Bookstore;

   // 具有统计平装书并求出平装书的平均价格功能的类:   class PriceTotaller         int countBooks = ;      decimal priceBooks = m;

      internal void AddBookToTotal(Book book)               countBooks += ;         priceBooks += book Price;     

      internal decimal AveragePrice()               return priceBooks / countBooks;        

cha138/Article/program/net/201311/15563

相关参考

知识大全 .NET 委托

.NET委托  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  委托类型定义  C#编译器处理委托时

知识大全 一个关于C#的睡前故事[1]

NET委托:一个关于C#的睡前故事[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 asp.net教程-委托(Delegate)

asp.net教程-委托(Delegate)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 通过代码学习C#&.NET——委托使用

通过代码学习C#&.NET——委托使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码编写及

知识大全 .NET反射、委托技术与设计模式

.NET反射、委托技术与设计模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  反射技术与设计模

知识大全 一个关于C#的睡前故事[2]

NET委托:一个关于C#的睡前故事[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 一个关于C#的睡前故事[3]

NET委托:一个关于C#的睡前故事[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

遵义会议委托__起草《中央关于反对敌人五次“围剿”的总结的决议》

遵义会议委托_____起草《中央关于反对敌人五次“围剿”的总结的决议》。A、毛泽东B、张闻天C、周恩来D、博古答案:B解析:1935年1月15日。17日,中共中央在遵义召开政治局扩大会议。会议将毛泽东

知识大全 关于ASP.NET页面打印技术的总结[1]

关于ASP.NET页面打印技术的总结[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  网络打

知识大全 关于VS 2008和.NET 3.5 Beta2新特性介绍[1]

关于VS2008和.NET3.5Beta2新特性介绍[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一