一般来说事件和委托一起用的时候,用于多线程之间的通信,但我的代码为了方便,暂时没用多线程。
代码如下:
using System;
using System.Reflection;
namespace ConsoleApplication1
{
//事件发布器
class MyEventClass
{
public delegate int DelegateAdd(int a,int b);//声明委托类型
public event DelegateAdd enentAdd;//声明事件本身
public void startEvent(int a,int b)
{
int nret = enentAdd(a,b);//使用事件
Console.WriteLine($"{a}+{b} = {nret}");//在界面上输出结果
}
}
//事件响应器
class MyClass
{
public int Add(int a,int b)//事件响应函数
{
return a + b;
}
}
class Program
{
static void Main(string[] args)
{
MyEventClass myEventClass = new MyEventClass();
MyClass myClass = new MyClass();
myEventClass.enentAdd += myClass.Add;//将事件与响应函数绑定
myEventClass.startEvent(1,2);//调用事件
Console.ReadKey();
}
}
}
运行结果如下: