C#==>委托
1,.NET的委托实际上是实现了函数指针的概念。比如C或者C++对于windows API中的回调函数的使用实际上就是方法调用的指针。
VB 中的AddressOf关键字也实现了该功能。
2,当我们把方法传递给其他方法时,需要使用委托。
需要用到方法作为参数传递的几个实例:
①,启动线程。Thread类的构造函数
②,事件。事件发生时,把处理时间的方法传送为委托的一个参数。
3,.NET中不允许直接引用函数的指针,必须把方法的细节封装在一种新类型的对象中,即委托。
委托实际上是一种特殊的对象类型,委托不包含数据,有的仅仅是方法的地址。
4,委托的声明。委托的声明中包含了方法的全部细节,①返回类型,②带有的参数
例:delegate void MyMethod(int i);
※:地应委托实际上是定义了一个新类,所以可以在定义类的任何地方地址委托,
而不必非要定义在一个类的内部。
5,委托的使用
6,实例
namespace 委托 { delegate void MyMethod(int i); class Program { static void showInt(int i) { Console.WriteLine(i.ToString()); } static void Main(string[] args) { MyMethod my = new MyMethod(showInt); //C#2.0之后可以使用如下方式定义委托 MyMethod my2 = showInt; my(100); //实际上编译器会编译为 my.Invoke(100); my2(1000); //结果为100,1000 Console.Read(); } } }
7,委托的实例可以表示任何类型的任何对象上的实例方法或静态方法。
浙公网安备 33010602011771号