委托.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
委托

委托 C++、Pascal 和其他语言支持函数指针的概念,允许您在运行时选择要调用哪些函数。 Java 不提供任何具有函数指针功能的结构,但 C# 提供这种构造即通过使用 Delegate 类,委托实例可以封装属于可调用实体的方法。 对于实例方法,委托由一个包含类的实例和该实例上的方法组成。对于静态方法,可调用实体由一个类和该类上的静态方法组成。因此,委托可用于调用任何对象的函数,而且委托是面向对象的、类型安全和安全的。 定义和使用委托有三个步骤: 声明 实例化 调用 委托声明 delegate void Del1();然后可以使用此委托引用返回 void 而且不带任何参数的函数。 delegate long Del2(string s);若要为任何带一个字符串参数且返回 long 型结果的函数创建委托。 重新分配委托 Delegate 对象是不可变的,即设置与它们匹配的签名后就不能再更改签名了。但是,如果其他方法具有同一签名,您也可以指向该方法。在本例中,将 d 重新分配给一个新的委托对象,因此 d 将调用 DoMoreWork 方法。只有 DoWork 和 DoMoreWork 具有相同签名时,您才可以执行此操作。Del2 d; d = DoWork; d = DoMoreWork; 调用委托 调用委托 调用委托相当简单。只需用委托变量的名称替代方法名称。这将使用值 11 和 22 调用 Add 方法,并返回一个 long 型结果,该结果被赋给变量 sum: Del operation; operation = Add; long sum = operation【委托名】(11, 22); 委托实例和静态 you = new Calculation(MathClass.min ); MathClass m = new MathClass(); you = new Calculation(m.max );非静态的方法必须实例化使用[对象名.方法名],静态方法[类名.方法名]. 声明 实例化 调用 定义[声明委托类型]public delegate int myDelegate(int x,int y); 委托实例[声明实例化]:myDelegate calculatin=new myDelegate(对象名.sub);[sub是非静态的方法所以必须实例化sub所在的类] [调用]calculatin(10,3) delegate long Del(int i, int j); // declare the delegate type声明委托类型 声明Del operation; 实例化operation = MathClass.Add[为静态的方法]; 调用long sum = operation(11, 22); 委托[实例方法] 委托实例必须包含一个对象引用。前面的示例通过将方法声明为静态(意味着无需指定对象引用)避开了这一要求。但如果委托指实例方法,则必须按如下方式给定对象引用Del operation; // declare the delegate variable MathClass m1 = new MathClass(); // declare the MathClass instance operation = m1.Add; // set the delegate to refer to the Add method和 MathClass m1 = new MathClass(); Del operation=new operation(m1.Add);等价。 委托实例 delegate long Del(int i, int j); // declare the delegate type声明委托类型 static void Main() { Del operation; // declare the delegate variable声明委托变量 operation = MathClass.Add;// set the delegate to refer to the Add method设置委托指向增加的方法 long sum = operation(11, 22); // use the delegate to call the Add method调用委托 System.Console.WriteLine(11 + 22 = + sum); } 委托和函数指针 委托是c#的一种引用类型,类似于c和c++中的函数指针,与其不同的是委托是面向对象,类型安全的,而且委托可以引用静态方法和实例方法,而函数指针[

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档