一、事件的概念
1. 事件是基于委托的存在,是委托的安全包裹,讓委托的使用更具有安全性
2. 事件是一種特殊的變量類型
二、事件的使用
1. 語法:event 委托類型 事件名;
2. 使用:
? ? ? ? (1)事件是作為成員變量存在與類中
? ? ? ? (2)委托怎么用,事件就怎么用
3. 事件與委托的區別:事件不能在類外部賦值和調用
4. 只能作為成員變量存在與類和接口以及結構體中
5. 代碼:
using System;namespace Event
{class Program{static void Main(string[] args){Test test = new Test();// 委托可以在外部賦值test.action = fun;test.action += fun;test.action -= fun;// 事件不能在外部賦值// test.myEvent = fun(); 編譯報錯:事件不能在外部賦值test.myEvent += fun; // 但是可以添加、移除函數test.myEvent -= fun;// 委托可以在外部調用test.action.Invoke();// 事件不能在外部調用// test.myEvent.Invoke(); 編譯報錯:事件不能在外部調用test.doEvent(); // 但是可以在內部封裝調用}static void fun(){Console.WriteLine("調用fun()");}}class Test{// 創建委托成員變量,用于存儲函數public Action action;// 創建事件成員變量,用于存儲函數public event Action myEvent;public void doEvent(){Console.WriteLine("調用doEvent()");if(myEvent != null)myEvent.Invoke();}}
}
運行結果如下:
三、事件的作用
1. 防止外部隨意置空委托
2. 防止外部隨意調用委托
3. 事件相當于對委托進行了一次封裝,使其更加安全