using System;
namespace TestEvent
{
class Program
{
static void Main(string[] args)
{
Caculator caculator = new Caculator();
CaculateManager caculateManager = new CaculateManager();
//事件绑定
caculator.MyCaculator += caculateManager.Add;
caculator.Caculate(100, 200);
caculator.MyCaculator += caculateManager.sub;
caculator.Caculate(100, 200);
//事件注销
caculator.MyCaculator -= caculateManager.Add;
Console.Read();
}
}
public class CaculateEventArgs : EventArgs
{
///
/// 二元操作的第一个数
///
public readonly Int32 x;
///
/// 二元操作的第二个数
///
public readonly Int32 y;
public CaculateEventArgs(Int32 x, Int32 y)
{
this.x = x;
this.y = y;
}
}
public class Caculator
{
//声明事件委托
public delegate void CaculateEventHandler(object sender, CaculateEventArgs e);
//声明事件成员,提供外部绑定
public event CaculateEventHandler MyCaculator;
//提供受保护的虚方法,可以由子类来拒绝监视
protected virtual void OnCaculate(CaculateEventArgs e)
{
if (MyCaculator != null)
{
//触发事件
MyCaculator(this, e);
}
}
//运行计算
public void Caculate(Int32 x, Int32 y)
{
CaculateEventArgs e = new CaculateEventArgs(x, y);
OnCaculate(e);
}
}
public class CaculateManager
{
//响应事件的方法
public void Add(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x+ e.y);
}
//响应事件的方法
public void sub(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x-e.y);
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-591572/
,如需转载,请注明出处,否则将追究法律责任。