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("老鼠跑掉了!");
    }
}
相關文章
相關標籤/搜索