学习编程已经好几年了,但是对于很基础的知识还是没有做到心中有数,以致在开发过程中,总是显的很不踏实。希望能够通过博客,通过自己的真正思考,把点滴的知识点理清,理顺。即使将来我不走技术这条路,相信这种总结和思考的能力在任何地方都是很有用的。
中国有句古话,"三思而后行"。我想在英文可以归纳为:what?why?how?翻译成中文可以这样理解:某件事是什么?为什么要做这件事?怎么做?经过这样的“三思”之后,我想做某件事就显得有意义,更加理性。而对于某项技术的学习,我们也试着如此“三思”一番,也将是必要的!
在此,我只记下一些思路,而没有更细节的东西。
1.什么是委托?
委托是指向方法的指针链。它可以将方法作为参数进行传递。它也是按类进行编译。它代表了方法的参数类型和返回值。
2.为什么要使用委托?
委托的可以将方法作为参数进行传递的特性,使得委托可以很好的将相互关联的两个对象进行解耦。由于委托是指向方法的指针链,使得通过委托可以达到,一个对象的变化能够通知到其他依赖的对象。
3.如何使用委托?
委托的申明
public delegate void MyDelegate(string param);
委托的定义
MyDelegate myDelegate = new MyDelegate(绑定的方法);
MyDelegate myDelegate;
委托的使用
myDelegate = 方法名;//将委托和方法进行绑定
myDelegate("参数");//调用委托
4.什么是事件?
事件是对委托类型的封装,其本质也是委托,只是对其访问权限做了限制:申明为public 或 proteced类型的事件,对内总是private,而对外为申明的类型。事件实际上是给委托加了一层皮。
5.为什么要使用事件?
使用事件机制主要是对委托的访问权限加以限制。
6.如何使用事件?(观察者模式)
事件的申明
public event MyDelegate myEvent;
和申明委托仅仅是多了一个event关键字。
事件的定义(不存在)
事件的使用
myEvent(参数);
观察者模式:定义为对象间的一对多的依赖关系,以便当一个对象的状态发生变化的时候,依赖于它的其他对象会被自动的告知并更新。
观察者模式不一定要使用事件机制。
观察者模式中的类:被监视对象,监视者,主程序。
被监视对象(subject):包含监视者感兴趣的信息,当监视者对此信息感兴趣,并对其注册以后,当某事件发生后,将会通过回调函数通知监视者(可以有多个)。
监视者(Observer):对被监视对象感兴趣,当被监视对象由于某事件发生时,触发回调后,监视者要处理该事件。
主程序:通过注册的方式搭连二者。
7..NET中的事件相关的使用规则
委托一般以EventHandler结尾;事件是委托去掉EventHandler;委托原型:void返回值,两个输入参数:一个Obejct类型(被监视对象),一个EventArgs类型或继承至EventArgs类型。继承至EventArgs的类以EventArgs结尾。