委托–事件:事件是委托的安全版本,第一点,在定义事件类的外部,它是不能使用=号来操作,只能用 += 第二点,在定义事件类的外部不能调用事件。另外事件就是在委托的前面增加一个envent关键字。
定义两个类一个用于定义事件和调用事件;另一个是事件函数类,里面写动作函数
/// <summary>
/// 定义事件和调用事件,要放在一个类内。
/// </summary>
class InvokeDefine
{
public event StudyDelegate StudyEvent; //定义一个事件【要写在类内部】
public void InvokeCallDelegate()
{
StudyEvent?.Invoke(); //null检查运算符
}
}
/// <summary>
/// 事件函数类,里面写的是动作函数。
/// </summary>
class EventFunction
{
public void Student1()
{
Console.WriteLine("我是Student1()函数");
}
public void Student2()
{
Console.WriteLine("我是Student2()函数");
}
public void Student3()
{
Console.WriteLine("我是Student3()函数");
}
}
在命名空间中定义一个委托 delegate void StudyDelegate(); //定义一个委托
在Program.cs类入口函数Main()函数中添加以下代码调用
static void Main(string[] args)
{
Console.WriteLine("=================委托事件=================");
EventFunction eventFunction = new EventFunction(); //事件函数类实例化,写动作
InvokeDefine invokeDefine = new InvokeDefine(); //定义事件和调用事件类实例化
invokeDefine.StudyEvent += eventFunction.Student1;
invokeDefine.StudyEvent += eventFunction.Student2;
invokeDefine.InvokeCallDelegate();
}