事件的概念
事件是指在满足要求时触发的方法或操作,比如在按钮被点击时进行的操作,亦或是,到了规定时间铃声响起。
事件的订阅与发布
事件一般使用发布-订阅模型,其中,发布器的作用是声明事件和声明该事件的委托类型,而声明该事件的委托类型,是利用委托的特性把订阅器与事件关联,使事件被触发时进行订阅器中的操作
实例代码
using System;
namespace ConsleApp_Event3
{
/**发布器**/
class Math_Time
{
public delegate void IntNumberMath(string msg);//声明事件的委托类型,并设置事件触发参数
public event IntNumberMath intnumbermath;//声明事件
public void Math_Message(string msg)
{
if(intnumbermath!=null)//检查是否为空
{
intnumbermath(msg);//传入参数,触发事件
}
}
}
/**订阅器**/
class Math
{
int a=0, b=0;
public Math(int a,int b)
{
this.a = a;
this.b = b;
}
public void OnMath(string mess)//触发事件后进行的操作
{
Console.WriteLine("两数之和为"+(this.a + this.b));
Console.WriteLine("两数之乘积为"+(this.a * this.b));
Console.WriteLine("两数之差为"+(this.a - this.b));
}
}
class Program
{
static void Main(string[] args)
{
Math_Time mt = new Math_Time();
Math m1 = new Math(2,4);
Math m2 = new Math(4, 5);
Math m3 = new Math(3, 6);
mt.intnumbermath += new Math_Time.IntNumberMath(m1.OnMath);
mt.intnumbermath += new Math_Time.IntNumberMath(m2.OnMath);
mt.intnumbermath += new Math_Time.IntNumberMath(m3.OnMath);
mt.Math_Message("计算开始");
}
}
}
最后运行结果如下