C# 事件與委托的使用場景


委托是一個,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞。

一、IF條件判斷語句

二、DELEGATE委托語句

 

委托參考示例:https://www.cnblogs.com/mq0036/p/9166893.html

1.委托的聲明

  (1). delegate

  delegate我們常用到的一種聲明

   Delegate至少0個參數,至多32個參數,可以無返回值,也可以指定返回值類型。

   例:public delegate int MethodtDelegate(int x, int y);表示有兩個參數,並返回int型。

  (2). Action

  Action是無返回值的泛型委托。

   Action 表示無參,無返回值的委托

   Action<int,string> 表示有傳入參數int,string無返回值的委托

   Action至少0個參數,至多16個參數,無返回值。

   例:public void Test<T>(Action<T> action,T p)

  (3). Func

   Func是有返回值的泛型委托

   Func<int> 表示無參,返回值為int的委托

   Func<object,string,int> 表示傳入參數為object, string 返回值為int的委托

   Func至少0個參數,至多16個參數,根據返回值泛型返回。必須有返回值,不可void

  例:public int Test<T1,T2>(Func<T1,T2,int>func,T1 a,T2 b)

   (4) .predicate

   predicate 是返回bool型的泛型委托

   predicate<int> 表示傳入參數為int 返回bool的委托

   Predicate有且只有一個參數,返回值固定為bool

   例:public delegate bool Predicate<T> (T obj)

  (5) .Lambada表達式

  Lambada表達式就是一個便捷的匿名函數。"=>"箭頭左邊是傳進匿名函數的參數,而右邊則是處理參數的邏輯。

 

2.事件(Event)

事件只不過用了event進行修飾,也可以說它是一種具有事件性質的委托。

事件使用 發布-訂閱(publisher-subscriber) 模型。

發布事件的類,這被稱為 發布器(publisher) 類。其他接受該事件的類被稱為 訂閱器(subscriber) 類。

聲明事件(Event)
在類的內部聲明事件,首先必須聲明該事件的委托類型。例如:
public delegate void BoilerLogHandler(string status);

然后,聲明事件本身,使用 event 關鍵字:
public event BoilerLogHandler BoilerEventLog;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM