精通C#学习笔记之事件(一)使用委托的弊端
来源:互联网 发布:淘宝几十元澳洲羊毛被 编辑:程序博客网 时间:2024/05/18 09:07
public class Car { public delegate void CarEngineHandler(string msgForCaller); public CarEngineHandler listOfHandlers; public void Accelerate(int delta) { if (listOfHandlers != null) { listOfHandlers("Sorry,this Car is dead..."); } } }委托允许内存中的对象进行双向对话,但当委托的成员变量定义为public时,调用者可以直接访问委托对象,这样,调用者可以把变量重新赋值为新的委托对象,同时调用者可以直接调用委托的调用列表,如下。公共的委托成员打破了封装,导致代码难以维护和调试,还会导致应用程序的安全风险。
class Program { static void Main(string[] args) { Console.WriteLine("*****Agh! No Encapsulation!*****\n"); //创建一个Car类 Car myCar = new Car(); myCar.listOfHandlers = new Car.CarEngineHandler(CallWhenExploded); myCar.Accelerate(10); //现在可以赋值一个全新的对象 myCar.listOfHandlers = new Car.CarEngineHandler(CallHereToo); myCar.Accelerate(10); //调用者可以直接调用委托 myCar.listOfHandlers.Invoke("hee,hee,hee..."); myCar.Accelerate(10); Console.ReadLine(); } static void CallWhenExploded(string msg) { Console.WriteLine(msg); } static void CallHereToo(string msg) { Console.WriteLine(msg); } }
0 0
- 精通C#学习笔记之事件(一)使用委托的弊端
- C#委托、事件学习之(一)——委托事件描述
- C#事件委托学习(一)
- C#事件 委托 学习笔记
- 学习笔记之---C#中的委托与事件
- C#中使用委托的学习笔记
- C#之委托学习一
- C#学习之代理委托的使用
- C#委托事件的使用
- C#学习笔记之委托
- c#中委托、事件之我见(一)
- C#编程之委托与事件(一)
- C#编程之委托与事件(一)
- C#委托与事件学习笔记
- c# 委托与事件 学习笔记
- C#学习笔记19-委托和事件
- C#委托、事件学习之(二)——简单按钮委托事件
- C#委托与事件之学习
- 查找输入整数二进制中1的个数
- MyEclipse 2014 安装并激活
- core bluetooth
- explain和profiling分析查询SQL时间
- 怎样用数字万用表测量主板上的三极管的基极和三极管的好坏
- 精通C#学习笔记之事件(一)使用委托的弊端
- JBPM4 学习使用总结
- python map()函数
- 从STL中的list删除元素
- 23种设计模式汇总整理
- 接口实现松耦合
- 为什么没有blog android客户端
- 【USACO】Wormholes(暴力搜索)
- codeforces 526 E(神题)