A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 过客 中级黑马   /  2012-4-15 17:53  /  2100 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个委托到底是个什么东西啊,还有它和事件的关系。哪位高手给具体说一下它的原理啊,不要举例子!!!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
委托是C#特有的功能,它也翻译为代理、代表、指代等。C#中没有指针的概念,但是通过委托可以实现C/C++中函数指针的功能,且比函数指针具有更强大的能力。简单的理解,方法的委托就是方法的别名(或是方法的代理),通过委托不但可以执行方法,而且可以将方法传到其他的方法中,实现方法回调等。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
委托(C# 编程指南)

委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示:

C#
public delegate int PerformCalculation(int x, int y);

与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。这样就可以通过编程方式来更改方法调用,还可以向现有类中插入新代码。只要知道委托的签名,便可以分配自己的委托方法。

将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。例如,可以向排序算法传递对比较两个对象的方法的引用。分离比较代码使得可以采用更通用的方式编写算法。

委托概述
委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

如何使用委托,请看
(VS.80).aspx

事件(C# 编程指南)

在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。

在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件。可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件。IDE 会自动添加空事件处理程序方法和订阅事件的代码。有关更多信息,请参见如何:订阅和取消订阅事件(C# 编程指南)。

事件概述
事件具有以下特点:

发行者确定何时引发事件,订户确定执行何种操作来响应该事件。

一个事件可以有多个订户。一个订户可处理来自多个发行者的多个事件。

没有订户的事件永远不会被调用。

事件通常用于通知用户操作(如:图形用户界面中的按钮单击或菜单选择操作)。

如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序。要异步调用事件,请参见使用异步方式调用同步方法。

可以利用事件同步线程。

在 .NET Framework 类库中,事件是基于 EventHandler 委托和 EventArgs 基类的。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
马跃 发表于 2012-4-17 17:12
委托(C# 编程指南)

委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行 ...

能再说一下事件和委托的关系吗?谢谢!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马