事件是基于委托的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//事件是基于委托的
namespace Event
{
class Program
{
static void Main(string[] args)
{
//没绑定事件时测试
var e = new EventTest(5);
e.SetValue(100);
//绑定事件后测试
e.ChangeNum +=
new EventTest.NumManipulationHandler(EventTest.EventFired);
e.SetValue(200);
Console.ReadLine();
}
}
class EventTest{
private int value;
public delegate void NumManipulationHandler();
//以下定义哪种类型的delegate委托可以被绑定到事件上面,事件的名称是ChangeNum。
public event NumManipulationHandler ChangeNum;
public EventTest(int n) {
SetValue(n);
}
//将此静态方法绑定到事件上去
public static void EventFired()
{
Console.WriteLine("Binded Event fired");
}
//事件
protected virtual void OnNumChanged()
{
if (ChangeNum != null)
{
ChangeNum();
}
else
{
Console.WriteLine("Event fired!");
}
}
//触发事件
public void SetValue(int n)
{
if (value != n)
{
value = n;
OnNumChanged();
}
}
}
}