基础知识系列☞C#中→委托
有些.NET中的高级特性,比如:委托! 有一种怎么也搞不懂的赶脚... 博客读了好几篇,代码也动手写了,书中的一些介绍也看了, 各种搜索关于委托的,至今还处于"会用"的阶段。 该怎么研究一个高级特性,这是个问题。 还是本来这些特性,你会用就可以了?
语言越多,感觉会越迷惑,
自己想用最少的语言,
最多的代码来总结下委托这个东西;
0、delegate
1、类似于C++中的函数指针,安全的函数指针,提供了程序回调指定方法的机制。
2/委托既可以接受实例方法,也可以接受静态方法;
using System; namespace _IT200.第6章_高级特性 { //这是一个委托,就这么简单的声明了,然后知道怎么用就可以了. //就像年龄小的时候,不会喝酒,长大了喝几次就会喝了...你和委托也就是差一个醉了... public delegate void 委托我来监视这是第几个方法(int i); class 委托 { public void method(int i) { Console.WriteLine("这是第{0}个方法..", i); } //静态方法 public static void method_static(int i) { Console.WriteLine("这是第{0}静态方法...", i); } static void Main() { Console.WriteLine("委托..."); 委托 w = new 委托(); //接受实例方法 委托我来监视这是第几个方法 委托实例 = new 委托我来监视这是第几个方法(w.method); //接受静态方法 委托我来监视这是第几个方法 委托实例_1 = new 委托我来监视这是第几个方法(method_static); //本质上,委托的调用其实就是执行了在定义委托时所生成的Invoke方法 委托实例(0); //Invoke转到定义是指向→"委托我来监视这是第几个方法" //Why?因为这个方法是由C#编译器自动帮我们完成的,可以通过Reflector验证一下↓ //:会发现还包含一个名为BeginInvoke和EndInvoke的方法。 委托实例.Invoke(1); //委托实例(2); == 委托实例.Invoke(2); Console.ReadKey(); } } }
运行结果: