C#中的委托
来源:互联网 发布:淘宝网怎么绑定信用卡 编辑:程序博客网 时间:2024/06/05 06:20
面向对象,从现实映射到程序世界
在现实中,委托什么意思?就是麻烦你帮我做件事或者是命令你帮我做件事
程序里,也是表达这个意思,先看委托的写法:
public delegate void 委托名();
初看这格式,是不是有点像方法?方法的格式:
public void 方法名()
{
//方法体
}
区别很明显,委托的关键字Delegate,
区别知道了吧,在现实生活中,委托只是个命令,做事情是别人,而在程序世界里委托只是存储了各个方法的地址,而他自己也是什么也不做的。
那我们就把刚才那个,小明委托小张去买车票的现实生活场景,怎么在程序世界里体现呢?
且看代码:public class MrZhang
{
//其实买车票的悲情人物是小张
public static void BuyTicket()
{
Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
}
}
//小明类
class MrMing
{
//声明一个委托,其实就是个“命令”
public delegate void BugTicketEventHandler();
public static void Main(string[] args)
{
//这里就是具体阐述这个命令是干什么的,本例是MrZhang.BuyTicket“小张买车票”
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
//这时候委托被附上了具体的方法
myDelegate();
Console.ReadKey();
}
}
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
这是委托的声明方法, BugTicketEventHandler(委托的方法);委托的方法必须要加上,因为委托的构造函数是不为空的。
注:委托的参数和返回类型,都要和你要具体委托的方法要一致,例:
public delegate void BugTicketEventHandler();
public static void BuyTicket()
{
Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
}
其实委托链也是相当的简单,在现实生活中,小明叫小张买完车票之后,可能接着又让他带张电影票,
而我们程序世界里的表述为:
//小张类public class MrZhang
{
//其实买车票的悲情人物是小张
public static void BuyTicket()
{
Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
}
public static void BuyMovieTicket()
{
Console.WriteLine("我去,自己泡妞,还要让我带电影票!");
}
}
//小明类
class MrMing
{
//声明一个委托,其实就是个“命令”
public delegate void BugTicketEventHandler();
public static void Main(string[] args)
{
//这里就是具体阐述这个命令是干什么的,本例是MrZhang.BuyTicket“小张买车票”
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
myDelegate += MrZhang.BuyMovieTicket;
//这时候委托被附上了具体的方法
myDelegate();
Console.ReadKey();
}
}
其实,我们只是在程序中加了 myDelegate += MrZhang.BuyMovieTicket;
这时这个委托就相当于要做2件事情,先是买车票,再是买电影票拉!
以上就是关于委托的一些说明本文转自
大白话系列之C#委托与事件讲解
http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1703368.html具体可以转看原文,作者写的比较通俗易懂,很不错的
- C#中的委托
- C# 中的委托
- C#中的委托
- c#中的委托!!!!
- c#中的委托
- [原创]c#中的委托
- 浅析C#中的委托
- C# 中的委托
- c#中的委托
- C#中的委托数组
- C#中的委托
- C#中的委托
- C#中的委托
- C# 中的委托类
- C# 中的委托
- C#中的委托,事件
- c#中的委托详解
- c#中的委托
- ORB特征原理(浅显易懂)
- 用Qt编写的windows平台关机程序(附源代码)
- Glide全解析
- java memcachedClient 存储有效期方法,切记
- 复杂运维场景下,如何实现分钟级的故障根因定位
- C#中的委托
- 数据结构之AVL树
- 剑指offer面试题:替换空格(将字符串每个空格替换为%20)
- Bundle savedInstanceState的作用
- 在网页中打开指定的应用APP
- ubuntu下允许root用户ssh远程登录
- Web前端:HTML~CSS~JS
- 指针学习1
- HTML 初级教程