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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wushanwow 中级黑马   /  2014-2-8 12:46  /  1006 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wushanwow 于 2014-2-9 00:17 编辑

    委托大概学习了一下怎么使用,委托使用最多的是事件处理中,但是我还是不是很清楚,使用委托的好处到底在哪里,比我用别的方法处理的优势体现在什么地方.

2 个回复

倒序浏览
http://ruizhinet.blog.163.com/blog/static/9921382820092801032681/ 这里写很清楚,供你参考吧~
回复 使用道具 举报
了解委托,从其定义开始,通常一个委托被声明为:
public delegate void CalculateDelegate(Int32 x, Int32 y);
关键字 delegate 用于声明一个委托类型 CalculateDelegate,可以对其添加访问修饰符,默认其
返回值类型为 void,接受两个 Int32 型参数 x 和 y,但是委托并不等同与方法,而是一个引用类型,
类似于 C++中的函数指针,稍后在委托本质里将对此有所交代。
下面的示例将介绍如何通过委托来实现一个计算器模拟程序,在此基础上来了解关于委托的
定义、创建和应用:
class DelegateEx
{
//声明一个委托
public delegate void CalculateDelegate(Int32 x, Int32 y);
//创建与委托关联的方法,二者具有相同的返回值类型和参数列表
public static void Add(Int32 x, Int32 y)
{
Console.WriteLine(x + y);
}
//定义委托类型变量
private static CalculateDelegate myDelegate;
public static void Main()
{
//进行委托绑定
myDelegate = new CalculateDelegate(Add);
//回调 Add 方法
myDelegate(100, 200);
}
}
上述示例,在类 DelegateEx 内部声明了一个 CalculateDelegate 委托类型,它具有和关联方法
Add 完全相同的返回值类型和参数列表,否则将导致编译时错误。将方法 Add 传递给 CalculateDel
egate 构造器,也就是将方法 Add 指派给 CalculateDelegate 委托,并将该引用赋给 myDelegate 变
量,也就表示 myDeleage 变量保存了指向 Add 方法的引用,以此实现对 Add 的回调。
由此可见,委托表示了对其回调方法的签名,可以将方法当作参数进行传递,并根据传入的
方法来动态的改变方法调用。只要为委托提供相同签名的方法,就可以与委托绑定,例如:
public static void Subtract(Int32 x, Int32 y)
{
Console.WriteLine(x - y);
}
同样,可以将方法 Subtract 分配给委托,通过参数传递实现方法回调,例如:
public static void Main()
{
//进行委托绑定
myDelegate = new CalculateDelegate(Subtract);
myDelegate(100, 200);
}

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马