第二十六講 深入委託

2021-06-21 08:01:25 字數 1955 閱讀 1515

主要內容

1. 我們忽略的事件與委託

有關於視窗載入的系統預定義的原**的理解

2. 定義,使用委託

分兩步1. 定義要使用的委託

2. 建立例項

3. 實踐--說媒,娶媳婦的標準

4. 多播委託

1. 可以讓乙個委託去呼叫一系列的方法

2. 採用+=增加到執行序列,使用-=從序列移除

5. 匿名方法

沒有方法簽名,只有方法體

如:delegate void del;

del d=delegate(object o,eventargs e){};//注意這裡是要加分號的

6. lambda表示式

lambda表示式是乙個匿名方法,它可以包含表示式和語句,並且可用於建立委託或表示式目錄樹型別。

例:delegate void d(string msg);

d=msg=>;

d("lambda表示式");

7. 實踐--窗體互動

委託,事件的使用

邊看邊實踐,寫的**有點亂:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace con26

; //***************事件處理方式也可以是乙個匿名方法**********

test1 += delegate(string s)

;//************這是個lamada表示式,這次要好好的理解它*************

hellodelegate h1 = ss => console.writeline(ss);

h1("lamada表示式的使用");

//************這是個還兩個引數的lamada表示式,而且還有返回值*************

adddelegate add = (a, b) => a * b;

int i = add(23, 34);

//************有返回值的委託與事件*************

addmethod +=new adddelegate(addm);

console.writeline(i);

console.writeline(test(12, 23));//被委託執行的方法得到返回值

console.readkey();

}/// /// 還乙個引數,返回並列印字串

///

/// 字串引數

public static void returnmessage(string s)

/// /// 還乙個引數,返回並列印字串

///

/// 字串引數

public static void returnmessage2(string s)

/// /// 多個引數的方法

///

/// 引數1

/// 引數2

/// 返回整型

public static int test(int a,int b)

/// /// 多個引數的方法

///

/// 引數1

/// 引數2

/// 返回整型

public static int addm(int a, int b)}}

執行結果:

像lamada表示式,委託,匿名方法,擴充套件方法這些,田老師認為不必過深研究的東東,高手們用著跟玩笑似的,看來確實是高手,如果我們聽老師的不求甚解,高手寫的**還直沒辦法看的懂。多多少少還是要深入一下,只要努力多碼**,理解是早晚的事兒!

暑假第二十六測

今天又考的奇差 題解 第一題 這麼簡單一道題我想了好久,智商實在是下線了 includeusing namespace std intmain view code 第二題 我們發現e的長度很小,我們可以在上面做文章,其實每個位置對應的 strlen e 都是一樣的 我們用樹狀陣列維護rt pos l...

第二十六天總結

求多源 無負權邊的最短路 floyd演算法 floyd warshall演算法是解決任意兩點間的最短路徑的一種演算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。floyd warshall演算法的時間複雜度為o n3 空間複雜度為o n2 最小生成樹 給定乙個無向圖,...

打卡第二十六天

在組合數合裡,貝爾數給出了集合劃分的數目,以數學家埃里克 坦普爾 貝爾 eric temple bell 命名,是組合數學中的一組整數數列。貝爾三角形類似於楊輝三角,只是其中各個項的計算規則不同。其規則如下 1.第一行第一項是1 2.對於n 1,第n行第一項等同第n 1行最後一項。3.對於m,n 1...