C#委托的实现
来源:互联网 发布:线切割绘图编程实例 编辑:程序博客网 时间:2024/05/22 05:02
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace MyDelegate
6 {
7 class Program
8 {
9 static void ZsEat(string food)
10 {
11 Console.WriteLine("张三吃"+food);
12 }
13
14 static void Main(string[] args)
15 {
16 ZsEat("西瓜");
17 Console.ReadKey();
18 }
19 }
20 }
输出:张三吃西瓜
这个程序对任何的初学者来说都不难吧?
接下来用委托:
using System;
using System.Collections.Generic;
using System.Text;
delegate void EatDelegate(string food); //声明一个委托,需要注意的是此委托的返回值,参数类型,参数的数目需和将代理的方法(本例:ZsEat)一致。
namespace MyDelegate
{
class Program
{
static void ZsEat(string food)
{
Console.WriteLine("张三吃" + food);
}
static void Main(string[] args)
{
//ZsEat("西瓜");
EatDelegate zs = new EatDelegate(ZsEat); //将方法和委托关联起来
zs("西瓜");
Console.ReadKey();
}
}
}
注:实例化委托对象,会造成系统上资源的浪费,这样我们可以使用匿名方法。
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 delegate void EatDelegate(string food); namespace MyDelegate
6 {
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 EatDelegate chain = null;
12 chain += delegate(string food) { Console.WriteLine("张三吃" + food); };
13 chain("西瓜");
14 Console.ReadKey();
15 }
16 }
17 }
总结:Public delegate void SomeHandler(参数);
SomeHandler sh = new SomeHandler(这里写跟定义的委托有一样返回值,一样参数类型的方法名称);
//调用
sh(参数);
你可以用委托调用某种类型的方法
只要符合你的委托 ,它将能调用所有可访问的同类方法.
简言之使用方式如下:
以一个例子说明:
//定义原形
public delegate void MessageEventHandler(object sender, EventArgs e);
public event MessageEventHandler MessageReceived;
//注册事件
MessageReceived += new MessageEventHandler(HandleIt);
//使用时
MessageReceived(this,aaa) //aaa是一个EventArgs对象
//定义的处理方法
private void HandleIt(object sender, EventArgs e)
{
.....
}
优点:
委托和函数指针一样,你只需要知道函数的返回类型和参数就够了,而不需要关心函数入口地址(位置)或者函数名称,(或者说由于某些函数需要晚期绑定,在你写调用函数的代码时还不知道这些信息)。
换句话说,例如一个封装类库在写默认的消息处理函数时,并不知道用户定义的消息处理函数是什么,它只管遍历并调用链表上的函数指针/委托就可以了。
这就是函数指针/委托的作用
- C#委托的实现
- C#委托的C++实现
- C# 委托的一个实现
- C#里的委托和事件实现
- C#里的委托和事件实现
- C#里的委托和事件实现
- C#里的委托和事件实现
- C#委托的具体实现方法
- 最简单的C#委托实现方法
- C#里的委托和事件实现
- 小议C#的事件和委托实现
- 在C++中实现C#的委托
- Java 利用反射实现C#的委托
- C#委托具体实现
- c#委托异步实现
- c#委托----单一的委托
- C#委托-委托的使用
- (转)C#的委托机制的C++的一种实现
- ul/li的使用及浏览器兼容问题
- sql2005 sa 登录失败问题
- 图片上传前预览
- 木马攻防3
- Linux系统管理实践(8):网络配置 (续)
- C#委托的实现
- SWT屏幕截屏(类似于QQ截屏) SWT 截屏 QQ
- asp.net客户端输出脚本方式汇总
- sql语句
- C#中计算两个日期差
- 关于Geodatabase(转)
- 从算法入手讲解SQL Server的典型示例
- 通用套打web端解决方法
- Symbian中反汇编代码分析