C#委托
来源:互联网 发布:热力图软件 编辑:程序博客网 时间:2024/05/17 09:07
委托:
委托定义了方法的类型,使得方法可以作为另一个方法的参数来进行传递,这样可以在程序中避免使用大量的判断语句,同时使程序具有更好的扩展性。
可以将多个方法绑定到同一个委托变量上,当调用该委托变量时,所有绑定到该委托变量上的方法将会被依次调用。
例:
public delegate void DelegateModel(string name);//定义委托
public class Delegate
{
public DelegateModel DM;//声明委托变量
public void Function(string name, DelegateModel dm)
{
dm(name);
}
}
class Program
{
public static void Fun1(string name)
{
Console.WriteLine("Fun1:"+name);
}
public static void Fun2(string name)
{
Console.WriteLine("Fun2:" + name);
}
static void Main(string[] args)
{
Delegate A = new Delegate();
Console.WriteLine("多个方法绑定到同一个委托上。");
A.DM = Fun1;
A.DM += Fun2;
A.Function("C#",A.DM);
Console.WriteLine("解除委托绑定。");
A.DM -= Fun1;
A.Function("C#", A.DM);
Console.ReadKey();
}
}
结果:
多个方法绑定到同一个委托上。
Fun1:C#
Fun2:C#
解除委托绑定。
Fun2:C#
委托注意事项:
1,委托隐含具有sealed属性,不能用来派生新的类型。
2,,委托的最大的作用就是为类的事件绑定事件处理程序。
3,在调用委托前要判断委托是否为NULL,不为空才能调用。
改进:
public delegate void DelegateModel(string name);//定义委托
public class Delegate
{
public DelegateModel DM;//声明委托变量
public void Function(string name)
{
if (DM != null)//是否有方法绑定到该委托上
{
DM(name);
}
}
}
class Program
{
public static void Fun1(string name)
{
Console.WriteLine("Fun1:"+name);
}
public static void Fun2(string name)
{
Console.WriteLine("Fun2:" + name);
}
static void Main(string[] args)
{
Delegate A = new Delegate();
Console.WriteLine("多个方法绑定到同一个委托上。");
A.DM = Fun1;
A.DM += Fun2;
A.Function("C#");
Console.WriteLine("解除委托绑定。");
A.DM -= Fun1;
A.Function("C#");
Console.ReadKey();
}
}
- C#委托-委托概述
- C#委托
- C#委托
- C#委托
- c#委托
- C# 委托
- C#委托
- C# 委托
- c#委托
- C#委托
- c#委托
- C#委托
- C# - 委托
- C#委托
- C#委托
- C#委托
- C# 委托
- c#委托
- scanf、getchar、gets的比较
- 奇怪的连通图
- C++ 内存管理的小问题-
- 推断和学习
- 3D视频可能出现的质量问题 (MSU出品)
- C#委托
- win7下访问Application Data文件夹
- Gearman 介绍
- java web 开发入门心得
- 已知链表的头结点head,写一个函数把这个链表逆序
- C语言中常用控制符
- UBUNTU下软件的安装,卸载和查询
- Linux内存管理
- Java 转义字符