黑马程序员技术交流社区
标题:
委托和事件的小问题
[打印本页]
作者:
郑丹丹1990
时间:
2013-4-28 21:59
标题:
委托和事件的小问题
namespace 事件发布和订阅_2
{
class Program
{
static void Main(string[] args)
{
TrafficLight light = new TrafficLight();
Car car1 = new Car();
car1.Enter(light);
light.ChangeColor(60);
Console.ReadKey();
}
}
public class LightEvrntArgs : EventArgs
{
private int seconds;
public int Seconds { get { return seconds; } }
public LightEvrntArgs(int seconds)
{
this.seconds = seconds;
}
}
public class TrafficLight
{
private bool color = false;
public bool Color { get { return color; } }
public event EventHandler OnColorChange;
public void ChangeColor(int seconds)
{
color = !color;
Console.WriteLine(color ? "红灯亮" : "绿灯亮");
if (OnColorChange != null)
{
OnColorChange(this, new LightEvrntArgs(seconds));
}
}
}
public class Car
{
private bool bRun = true;
public void Enter(TrafficLight light)
{
light.OnColorChange += LightChange;
}
//相应的事件处理方法
public virtual void LightChange(object sender, EventArgs e)
{
if (((TrafficLight)sender).Color)
{
bRun = false;
Console.WriteLine("{0}停车{1}秒后启动", this, ((LightEvrntArgs)e).Seconds);
}
else
{
bRun = true;
Console.WriteLine("{0}启动{1}秒后通过", this, ((LightEvrntArgs)e).Seconds);
}
}
}
}
复制代码
这个事件委托我似懂非懂,//相应的事件处理方法
public virtual void LightChange(object sender, EventArgs e)
这句我只知道相当于WinForm程序中的Button_Click(object sender, EventArgs e)
主要是事件发布者方TrafficLight的事件委托该如何理解????
作者:
许庭洲
时间:
2013-4-29 06:18
1. 委托是类型;
2. 事件是对象;
3. 事件的内部是用委托实现的;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2