C#中的delegate(代理/委托),简介说明(zz)
2007-09-19 21:28
609 查看
c# 中,取消了c和c++中使用最灵活,也是最难掌握的指针。那么在C#中如何提供c/C++中的函数指针的功能?c#提供了委托(delegate),委托是继承自System.Delegate类的引用类型。它相当于函数指针原型。与函数指针不同的是,委托在C#中是类型安全的,委托特别适合于匿名调用。要使用委托需经过三个步骤,即声明、实例化、调用。
using System;
//声明一个名为mfDelegate的委托,该委托有一个string类型的参数
//C#编译器编译时会产生一个新类,该类继承自System.Delegate,类
//名为mfDelegate
public delegate void mfDelegate(string name);
public class MikeCat
...{
//定义与mfDelegate有相同参数类型的方法Hello()
public static void Hello(string name)
...{
Console.WriteLine("您好,{0}!",name);
}
//定义与mfDelegate有相同参数类型的方法GoodBye()
public static void GoodBye(string name)
...{
Console.WriteLine("再见,{0}!",name);
}
public static void Main()
...{
//创建一个mfDelegate实例 mf1
mfDelegate mf1=new mfDelegate(Hello);
//调用mf1
mf1("mikecat");
mfDelegate mf2=new mfDelegate(GoodBye);
mf2("mikecat");
//将mf1 mf2组合成一个新的委托mf3
mfDelegate mf3=mf1+mf2;
//调用mf3
mf3("迈克老猫");
//从组合的委托mf3中删除mf1
mfDelegate mf4=mf3-mf1;
mf4("mikecat");
}
}
程序结果:
您好,mikecat!//mf1; 再见,mikecat!//mf2
您好,迈克老猫! 再见,迈克老猫!//mf3
再见,mikecat!//mf4
using System;
//声明一个名为mfDelegate的委托,该委托有一个string类型的参数
//C#编译器编译时会产生一个新类,该类继承自System.Delegate,类
//名为mfDelegate
public delegate void mfDelegate(string name);
public class MikeCat
...{
//定义与mfDelegate有相同参数类型的方法Hello()
public static void Hello(string name)
...{
Console.WriteLine("您好,{0}!",name);
}
//定义与mfDelegate有相同参数类型的方法GoodBye()
public static void GoodBye(string name)
...{
Console.WriteLine("再见,{0}!",name);
}
public static void Main()
...{
//创建一个mfDelegate实例 mf1
mfDelegate mf1=new mfDelegate(Hello);
//调用mf1
mf1("mikecat");
mfDelegate mf2=new mfDelegate(GoodBye);
mf2("mikecat");
//将mf1 mf2组合成一个新的委托mf3
mfDelegate mf3=mf1+mf2;
//调用mf3
mf3("迈克老猫");
//从组合的委托mf3中删除mf1
mfDelegate mf4=mf3-mf1;
mf4("mikecat");
}
}
程序结果:
您好,mikecat!//mf1; 再见,mikecat!//mf2
您好,迈克老猫! 再见,迈克老猫!//mf3
再见,mikecat!//mf4
相关文章推荐
- Delegate 委托 C#(ZZ)
- C# 代理/委托 Delegate
- C#中的委托(delegate)用法简介
- (zz)从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- c# 代理/委托 Delegate
- Unity3D 利用C#实现简单的代理模式Delegate(委托)
- C#里委托/代理delegate 一例
- C#的事件(Event)和代理/委托(Delegate)例子
- C#中的委托(delegate)用法简介
- C# Delegate 简介
- 【C#基础】枚举(Enum)、结构体(Struct)、委托(Delegate)
- C#程序设计语言Version2.0简介(zz)
- C#委托的介绍(delegate、Action、Func、predicate)
- C# Delegate 简介
- c#的委托用法delegate
- C#委托的介绍(delegate、Action、Func、predicate)
- 关于C#的委托类型【delegate 】
- Delegate 代理委托 +block+类别Category
- c# 委托:Delegate,Action,Func,Predicate的使用与区别
- [轉]C#中的代理(Delegate) 理解