事件和委托学习小练习
2009-07-28 14:15
435 查看
总之我觉得事件和委托不是那么好真正理解,委托原本很好理解,可是一旦事件和委托难分难解的时候,我总是有点迷糊,即使当时我看人家写的很明白,大概当时自己也明白了,可是事后一想,我又糊涂了。
于是,我自己也按我的理解写了一个委托和事件的小例子,大概是懂了,希望往后也不要再迷糊,假若又迷糊了,那就回来看看吧。
程序的意思是工人上班要外出,保安拦住了。
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
/// <summary>
/// 定义WorkerEventArgs类是用于在事件发送器和事件接收器之间传递信息
/// </summary>
public class WorkerEventArgs :EventArgs
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public WorkerEventArgs() : base() { }
}
/// <summary>
/// 定义工人类 工人类是发送器 发送器定义接收器要使用的委托以及相关事件成员
/// </summary>
public class Worker
{
public delegate void GoOutEventHandle(object sender,WorkerEventArgs e);
public static event GoOutEventHandle ProhibitOut;
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void GoOut()
{
Console.WriteLine("我要外去!");
WorkerEventArgs we = new WorkerEventArgs();
we.Name = this.Name;
OnGoOut(this,we);
}
public void OnGoOut(object sender,WorkerEventArgs e)
{
if (ProhibitOut != null)
{
ProhibitOut(sender,e);
}
}
}
/// <summary>
/// 事件接收类 接收器将事件处理程序注册到事件中
/// </summary>
public class Security
{
public Security()
{
Worker.ProhibitOut += new Worker.GoOutEventHandle(Prohibit);//注册事件ProhibitOut
}
public void Prohibit(object sender,WorkerEventArgs e)
{
Console.WriteLine(e.Name+",上班期间您不能外出!");
}
}
class Program
{
static void Main(string[] args)
{
Security st = new Security();
Worker wk = new Worker();
wk.Name = "aryang";
wk.GoOut();
Console.ReadKey();
}
}
}
于是,我自己也按我的理解写了一个委托和事件的小例子,大概是懂了,希望往后也不要再迷糊,假若又迷糊了,那就回来看看吧。
程序的意思是工人上班要外出,保安拦住了。
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
/// <summary>
/// 定义WorkerEventArgs类是用于在事件发送器和事件接收器之间传递信息
/// </summary>
public class WorkerEventArgs :EventArgs
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public WorkerEventArgs() : base() { }
}
/// <summary>
/// 定义工人类 工人类是发送器 发送器定义接收器要使用的委托以及相关事件成员
/// </summary>
public class Worker
{
public delegate void GoOutEventHandle(object sender,WorkerEventArgs e);
public static event GoOutEventHandle ProhibitOut;
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void GoOut()
{
Console.WriteLine("我要外去!");
WorkerEventArgs we = new WorkerEventArgs();
we.Name = this.Name;
OnGoOut(this,we);
}
public void OnGoOut(object sender,WorkerEventArgs e)
{
if (ProhibitOut != null)
{
ProhibitOut(sender,e);
}
}
}
/// <summary>
/// 事件接收类 接收器将事件处理程序注册到事件中
/// </summary>
public class Security
{
public Security()
{
Worker.ProhibitOut += new Worker.GoOutEventHandle(Prohibit);//注册事件ProhibitOut
}
public void Prohibit(object sender,WorkerEventArgs e)
{
Console.WriteLine(e.Name+",上班期间您不能外出!");
}
}
class Program
{
static void Main(string[] args)
{
Security st = new Security();
Worker wk = new Worker();
wk.Name = "aryang";
wk.GoOut();
Console.ReadKey();
}
}
}
相关文章推荐
- [Unity&C#&事件委托]对委托事件的学习与实践
- 委托与事件的练习
- JavaScript 学习笔记— —事件委托
- jQuery-事件委托案例练习
- C#事件委托学习(一)
- .Net学习之基于委托、事件的观察者模式
- 学习笔记---再次理解事件和委托
- 委托与事件学习笔记1---什么是委托?
- C#委托与事件学习笔记
- 《csharp高级编程》 学习笔记 第七章 委托和事件
- Pygame 学习练习(一):什么是事件?
- 学习笔记---对委托、匿名方法、Lama表达式及事件的理解
- 学习系列之委托与事件
- 事件和委托学习
- C# 委托 事件 学习 以及 小DEMO
- C#委托,事件最初浅的和最易看懂的学习笔记
- 2010.4.9 委托和事件学习
- [ASP.NET学习笔记之二十二].NET中的委托与事件研究
- 委托与事件学习理解1
- 学习笔记--委托,Lambda表达式和事件(2)