码迷,mamicode.com
首页 > Windows程序 > 详细

C#中委托的进一步理解

时间:2017-12-14 04:26:16      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:[]   ora   parent   class   margin   com   sys   text   pad   

文章介绍了委托的基本知识,接下来就进一步研究一下委托。


委托类型

其实,刚开始觉得委托类型是一个比较难理解的概念,怎么也不觉得下面的”AssembleIphoneHandler”是一个类型。


代码如下:


public delegate void AssembleIphoneHandler();

按照正常的情况,如果我们要创建一个委托类型应该是:


代码如下:


public class AssembleIphoneHandler : System.MulticastDelegate

{

}

但是,这种写法是编译不过的,会提示不能从”System.MulticastDelegate”派生子类。

其实,这里是编译器为我们做了一个转换,当我们使用delegate关键字声明一个委托类型的时候,编译器就会按照上面代码片段中的方式为我们创建一个委托类型。

知道了这些东西,对于委托类型的理解就比较容易了,通过delegate声明的委托类型就是一个从”System.MulticastDelegate”派生出来的子类。


建立委托链

下面我们通过一个例子来看看委托链的建立,以及调用列表的变化,基于前面一篇文章中的例子进行一些修改。


代码如下:


class Program

{

static void Main(string[] args)

{

Apple apple = new Apple();

Foxconn foxconn = new Foxconn();

Apple.AssembleIphoneHandler d1, d2, d3, d4 = null;

d1 = new Apple.AssembleIphoneHandler(foxconn.AssembleIphone);

d2 = new Apple.AssembleIphoneHandler(foxconn.PackIphone);

d3 = new Apple.AssembleIphoneHandler(foxconn.ShipIphone);

d4 += d1;

d4 += d2;

d4 += d3;

d4();

Console.Read();

}

}

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#中委托的进一步理解

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23130.html






相关内容

C#中委托的进一步理解

标签:[]   ora   parent   class   margin   com   sys   text   pad   

原文地址:http://www.cnblogs.com/paobuke/p/8035545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!