1. 程式人生 > >C#事件委託概念

C#事件委託概念

事件就是一個狹義的委託,也就是事件是一個用於事件驅動模型的專用委託.

通俗的講,委託你可以在客戶程式碼中直接呼叫委託來激發委託指向的函式,而事件不可以,事件的觸發只能由服務程式碼自己觸發

也就是說在你的程式碼裡委託你不但可以安排誰是它的呼叫函式,還可以直接呼叫它,而事件不能直接呼叫,只能通過某些操作觸發

你可以理解事件就是一個或多個委託,此話應該有誤的吧,事件可以有多個事件處理函式,委託同樣也可以是個多播委託

為什麼要用委託
  使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以將該委託物件傳遞給可呼叫所引用方法的程式碼,而不必在編譯時知道將呼叫哪個方法。與C或C++中的函式指標不同,委託是面向物件,而且是型別安全的。

/*
道事件委託面試題 - 貓叫老鼠跑主人醒
*/
 
using System;
 
namespace CatCry
{
    class MainClass
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
           // cat.OnMew += People.Wake;
            cat.Mew();
        }
    }
}
 
public class Cat
{
    
public delegate void EventMiao(); public event EventMiao OnMew; public void Mew() { Console.WriteLine("miao...."); OnMew += People.Wake; OnMew += Mouse.Run; OnMew(); } } public class People { public static void Wake() { Console.WriteLine(
"人醒!"); } } public class Mouse { public static void Run() { Console.WriteLine("老鼠跑掉了!"); } }