参考视频 c#教程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Csharp事件
{
/*
* 作者:Ai
* 时间:2018年3月1日22:19:02
*
* 事件(event)可被视作为一种特别的委托,
* 它为委托对象隐式地建立起add_XXX、remove_XXX 两个方法,
* 用作注册与注销事件的处理方法。
* 而且事件对应的变量成员将会被视为 private 变量,
* 外界无法超越事件所在对象直接访问它们,
* 这使事件具备良好的封装性,而且免除了add_XXX、remove_XXX等繁琐的代码。
*
*/
class Program
{
//0.声明一个委托类型
delegate void MyDelegateHanDler();
//1.基于委托类型声明一个事件
static event MyDelegateHanDler MyEvent;
static void Main(string[] args)
{
//2.为事件绑定方法
MyEvent += FunA;
MyEvent += FunB;
MyEvent();//3.执行事件
MyEvent -= FunB;//解除绑定
//3.为事件绑定匿名方法
MyEvent += delegate ()
{
Console.WriteLine("执行匿名方法A");
for (int i = 0; i < 10; i++)
{
Console.Write(i + " ");
}
Console.WriteLine();
};
MyEvent();
//4.Invoke 方法可以显式执行事件中的方法(每次 MyEvent()相当于 MyEvent.Invoke()
MyEvent.Invoke();
}
static void FunA()
{
Console.WriteLine("执行方法A");
}
static void FunB()
{
Console.WriteLine("执行方法B");
}
}
}