C 各種委託介紹

2022-02-07 21:32:52 字數 2582 閱讀 7475

委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞。事件是一種特殊的委託。

delegate 我們常用到的一種宣告

delegate 至少 0 個引數,至多 32 個引數,可以無返回值,也可以指定返回值型別。

public delegate int methodtdelegate(int x, int y);表示有兩個引數,並返回int型。
action 是無返回值的泛型委託。

action 表示無參,無返回值的委託。

action表示有傳入引數 int,string 無返回值的委託。

action表示有傳入引數 int,string,bool 無返回值的委託。

action表示有傳入 4 個 int 型引數,無返回值的委託。

action 至少 0 個引數,至多 16 個引數,無返回值。

public void test(actionaction,t p)

func 是有返回值的泛型委託

func 表示無參,返回值為 int 的委託

func表示傳入引數為 object, string 返回值為 int 的委託

func表示傳入引數為 object, string 返回值為 int 的委託

func表示傳入引數為 t1,t2,,t3(泛型)返回值為 int 的委託

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

public int test(funcfunc,t1 a,t2 b)

predicate 是返回 bool 型的泛型委託

predicate 表示傳入引數為 int 返回 bool 的委託

predicate 有且只有乙個引數,返回值固定為 bool

public delegate bool predicate(t obj)
public delegate int methoddelegate(int x, int y);

private static methoddelegate method;

static void main(string args)

private static int add(int x, int y)

static void main(string args)

", p); }, "hello world");//使用lambda表示式定義委託

console.readkey();

}public static void test(actionaction, t p)

private static void action(string s)

private static void action(int s)

可以使用 action委託以引數形式傳遞方法,而不用顯式宣告自定義的委託。 封裝的方法必須與此委託定義的方法簽名相對應。 也就是說,封裝的方法必須具有四個均通過值傳遞給它的引數,並且不能返回值。 (在 c# 中,該方法必須返回 void)通常,這種方法用於執行某個操作。

static void main(string args)

public static int test(funcfunc, t1 a, t2 b)

private static int fun(int a, int b)

泛型委託:表示定義一組條件並確定指定物件是否符合這些條件的方法。此委託由 array 和 list 類的幾種方法使用,用於在集合中搜尋元素。

static void main(string args)

;point first = array.find(points, productgt10);

console.writeline("found: x = , y = ", first.x, first.y);

console.readkey();

}private static bool productgt10(point p)

else

}

使用帶有 array.find 方法的 predicate 委託搜尋 point 結構的陣列。如果 x 和 y 欄位的乘積大於 100,000,此委託表示的方法 productgt10 將返回 true。find 方法為陣列的每個元素呼叫此委託,在符合測試條件的第乙個點處停止。

委託類似於 c++ 函式指標,但它們是型別安全的。

委託允許將方法作為引數進行傳遞。

委託可用於定義**方法。

委託可以鏈結在一起;例如,可以對乙個事件呼叫多個方法。

方法不必與委託簽名完全匹配。

delegate 至少 0 個引數,至多 32 個引數,可以無返回值,也可以指定返回值型別

func 可以接受 0 個至 16 個傳入引數,必須具有返回值

action 可以接受 0 個至 16 個傳入引數,無返回值

predicate 只能接受乙個傳入引數,返回值為 bool 型別

委託 C 委託 delegate 的介紹與使用

委託 delegate 即委託別人辦事 相當於 中介 委託某個方法來實現具體的功能。委託是一種引用型別,是方法的抽象,宣告時與方法相似,但不能稱之為方法。它儲存的是一系列具有相同引數和返回型別的方法位址。呼叫委託時,委託包含的所有方法都將被執行。委託在使用時遵循三步走的原則,即定義宣告委託 例項化委...

C 委託(匿名函式)的各種變形寫法

static void testdelegate for var i 0 i lst.count i public void sort comparisoncomparison public delegate int comparison t x,t y 這是對呼叫list.sort進行排序的寫法,...

C 實現的幾種委託方式介紹

複製 如下 普通委託 deleteshow ds new deleteshow showname console.writeline console.writeline 普通委託 請輸入使用者名稱 string name console.readline www.cppcns.com console...