C#事件-换一个角度理解委托和事件
来源:互联网 发布:pdf文档解密软件 编辑:程序博客网 时间:2024/04/27 13:31
未使用委托、事件之前的代码
using System;
class Program
{
static void Main(string[] args)
{
//实例化一个button类
Button btn = new Button();
btn.Click();
}
}
//首先要定义一个Button类,里面应该有一个Click方法
public class Button
{
//Click方法调用固定的方法
public void Click()
{
ForCustome fc = new ForCustome();
fc.Button_Click();
}
}
//上面这个类是封装了的,用户不可见,或者理解为用户不能更
改也可以
//下面这个类提供给用户
public class ForCustome
{
public void Button_Click()
{
//用户在这里写具体的方法实现
Console.WriteLine("被点击了!");
}
}
可以看出,以上的代码实现一个按钮是可行的,但两个按钮就麻烦了。不到黄河心不甘,我们硬着头皮再写两个按钮的情况吧。
using System;
class Program
{
static void Main(string[] args)
{
//实例化一个button类
Button btn = new Button();
btn.Click();
//实例化第二个button
Button btn2 = new Button();
btn2.Click(); //这样写能行么?我们发现,这样写根本不行!
}
}
//首先要定义一个Button类,里面应该有一个Click方法
public class Button
{
//Click方法调用固定的方法
public void Click()
{
ForCustome fc = new ForCustome();
fc.Button_Click();
//很想在这里面改呀,添一个方法调用
fc.Button2_Click(); //要是再有一段条件判断的逻辑就更好了,是吧?
}
}
//上面这个类是封装了的,用户不可见,或者理解为用户不能更改也可以
//下面这个类提供给用户
public class ForCustome
{
public void Button_Click()
{
//用户在这里写具体的方法实现
Console.WriteLine("被点击了!");
}
//添一个方法实现是必须的
public void Button2_Click()
{
Console.WriteLine("我是第二个被点击的按钮!");
}
}
如果你是自己在试着写的话,估计你已经崩溃了,这样实现太难了!
好了,看看微软是如何解决这个问题的吧。
using System;
//先声明一个委托再说,目标是要能调用ForCustome类里的方法,所以注意方法签名
public delegate void myDelegate();
public class Button
{
//声明一个事件,和委托相关联
public event myDelegate ClickIt;
public void Click()
{
//可以想象,这个方法是一个封装了之前我们想要的一大段条件判断语句的“复合体”
ClickIt();
}
}
class Program
{
static void Main(string[] args)
{
ForCustome fc = new ForCustome();
//实例化一个button类
Button btn = new Button();
//这里,将按钮的事件和按钮事件对应的(将要触发的)方法相关联,相当于我们之前想象的注册
btn.ClickIt += new myDelegate(fc.Button_Click);
btn.Click();
//实例化第二个button
Button btn2 = new Button();
btn2.ClickIt+=new myDelegate(fc.Button2_Click);
btn2.Click(); //这样写能行么?
}
}
//这个类提供给用户的,没有变化
public class ForCustome
{
public void Button_Click()
{
//用户在这里写具体的方法实现
Console.WriteLine("被点击了!");
}
//添一个方法实现是必须的
public void Button2_Click()
{
Console.WriteLine("我是第二个被点击的按钮!");
}
}
- C#事件-换一个角度理解委托和事件
- C#委托和事件理解
- c#委托、事件理解
- C#委托事件理解
- 理解C#中的委托和事件
- 深入理解C#中的委托和事件
- 深入理解C#中的委托和事件
- 理解C# 中的委托和事件
- 理解C# 中的委托和事件
- C# 中的委托和事件的理解
- c#委托和事件再理解
- c# 委托 和 事件 自学理解
- C#委托和事件 观察者模式理解
- 理解C#中的委托和事件
- c#委托和事件再理解
- c# 委托和委托事件
- 深入理解C#中的委托和事件:委托的定义
- C# 委托和事件
- MyEclipse 连接MySQL数据库
- C#事件-自定义事件
- 把XML文件输出到一个网页里
- C#事件-事件学习好例子
- 程序员的烦心事——项目组里的“红人”
- C#事件-换一个角度理解委托和事件
- C#事件-事件处理
- [Amazon AWS 云计算服务] - Amazon EC2快速指南和使用方法
- C#事件-事件本身就是一种多播委托
- C#事件-综合案例分析
- 在移动硬盘安装ubuntu
- C#事件-定义事件
- C#事件-自定义事件的使用方法
- C#事件-趣谈事件与委托