三種泛型委託簡介

2022-01-31 05:10:26 字數 2091 閱讀 4688

1 泛型委託 predicate

早在framework 2.0 的時候,微軟就為 list類新增了 find、findall 、foreach 等方法用作資料的查詢。

public t find ( predicatematch)

public listfindall(predicatematch)

在這些方法中存在乙個predicate 表示式,它是乙個返回bool的泛型委託,能接受乙個任意型別的物件作為引數。

public delegate bool predicate(t

obj)

在下面例子中,predicate

委託繫結了引數為person類的方法match作為查詢條件,然後使用 findall 方法查詢到合適條件的 list集合。

1     class program

2

12 //模擬源資料

13 static listgetlist()

14

21 //查詢條件

22 static bool match(person person)

23

26 }

27 28 public class person

29

36 37 public int id

38

39 public string name

40

41 public int age

42

43 }

2  泛型委託 action

action的使用方式與 predicate相似,不同之處在於 predicate返回值為 bool , action的返回值為 void。

action

支援0~16個引數,可以按需求任意使用。

public delegate void action()

public delegate void action(t1

obj1)

public delegate void

action(t1 obj1, t2 obj2)

public delegate void action(t1 obj1, t2

obj2,t3 obj3)

............

public delegate void action(t1 obj1, t2 obj2,t3 obj3,......,t16 obj16)

1         static void main(string args)

2

7 8 static void showmessage(string message)

9

3 泛型委託 func

委託 func 與 action 相似,同樣支援 0~16 個引數,不同之處在於func 必須具有返回值

public delegate tresult func()

public delegate

tresult func(t1 obj1)

public delegate tresult func(t1

obj1,t2 obj2)

public delegate tresult

func(t1 obj1,t2 obj2,t3 obj3)

............

public delegate tresult

func(t1 obj1,t2 obj2,t3 obj3,......,t16

obj16)

1         static void main(string args)

2

8 9 static double account(double a,bool condition)

10

C 委託三 泛型委託

今天一直在研究委託,因為有函式指標的基礎,還容易上手,但是對於一些概念和實踐,總是為了弄的非常清楚而糾結,這幾篇關於委託的文章我是結合 c 與.net4高階程式設計 msdn 借鑑其他人的博文來總結話語,以最直接簡潔的話來闡述清楚 在我弄懂之前網上的感覺都很模糊 namespace genericd...

泛型的三種形式

說到泛型大家基本都知道 t 這個符號,類似的 e k 等等就不去談了,其實用起來都一樣的,那麼這個 t 是用來幹嘛的,其實啊這是泛型三種形式的宣告標識。三種形式分別是 泛型類,泛型介面,泛型方法,目前就這三種別扯別的了。在類名的後面加上 t 這就是泛型類了,這是最簡單的泛型類 t 是泛型三種形式的宣...

委託學習總結(三)泛型委託

之前,我們學習總結了委託這個概念,也闡述了委託,匿名方法,lambda表示式三者之間的關係,那麼今天再來繼續學習委託更深層次的東西 泛型委託,什麼是泛型,這個概念我也會在之後做出總結,這裡不做很深層次的討論,重點是討論泛型和委託如何配合使用,其實泛型這個概念在這裡也不會對我們對委託的理解有太大的影響...