拋開書本談 委託,為什麼需要委託,它成就了什麼?

2022-02-16 14:42:42 字數 2504 閱讀 4700

博文技術有限,重在學習交流,有錯誤大家指正。

思路:傳統的方法呼叫------>委託的出現解決了什麼問題---->委託的繫結方法----->總結

1.傳統的方法呼叫

view code

class program

static

void dancing(string name)

會跳舞",name);

}static

void singing(string name)

會唱歌",name);

}}

缺點:100個方法就要呼叫100次,如果每個人 對方法的需求不一樣,就不能很好的處理了。有人想展示跳舞,有人想唱歌,更有想一起展示。

2.引入 列舉試試看

view code

public

enum cy

class program

static

void personcy(string name,cy one)

}static

void dancing(string name)

會跳舞",name);

}static

void singing(string name)

會唱歌",name);

}

缺點:列舉雖然可以解決根據列舉的項判斷出 誰想展示什麼才藝,但是擴充套件性不好。

思考:有沒有一種方法,引數內帶有:這個人的名字,然後自己想展示什麼才藝,就自己帶入?

比如:方法(名字,我的才藝)

3.這個時候單播委託出現了

根據 方法(名字,我的才藝),這個型別知道:

名字是 string 型別的,也就是string類

我的才藝 是 方法,但是引數必須是有型別的,所以這裡我們可以推斷出我們要設計 乙個類class,這個類就是所有方法的型別。

注:這裡咱們輕易的看出了,委託起始就是定義 方法的型別。

view code

public

delegate

void cydl(string name);

class program

;personcy("

mr.w

",one);

personcy("

jack

", two);

personcy("

herry

", cys);

}static

void personcy(string name,params cydl ones)

}static

void dancing(string name)

會跳舞",name);

}static

void singing(string name)

會唱歌",name);

}}

輸出:mr.w會跳舞

jack會唱歌

herry會跳舞

herry會唱歌

哈哈,問題解決了,它沒有利用switch語句,這樣就可以根據不同的人,選擇不同的才藝表演了。

有人可能以為這樣和寫傳統的方法呼叫 有什麼區別,你注意到沒?你注意到沒:每次增加才藝,都必須在personcy()方法內修改,這樣使用委託帶入,即使

我們增加了才藝的方法,也只需要在委託中帶入即可。擴充套件性變優秀了。

注:上面還解決,乙個人多個才藝的問題,但是做法不標準,一般我們是利用 多播委託來完成的。

4.多播委託

view code

public

delegate

void cydl(string name);

class program

static

void personcy(string name,cydl one)

static

void dancing(string name)

會跳舞",name);

}static

void singing(string name)

會唱歌",name);

}}

思考:看起來還是不簡便,能否讓 personcy()也省略,直接讓委託呼叫方法,答案是可以的。

如下:view code

public

delegate

void cydl(string name);

class program

static

void dancing(string name)

會跳舞",name);

}static

void singing(string name)

會唱歌",name);

}}

這樣是不是 簡便很多了?

注:這裡有個多播委託的小細節,+=必須委託第二個方法的時候使用,第一委託必須是=,不然會出現未賦值的錯誤。

也可以使用-= 符號取消委託。

總結:博文技術有限,寫的有錯誤大家指正,從 為什麼需要委託,認識到了 委託其實就是乙個 定義方法型別的類,到 簡化**實現了委託繫結了方法。

什麼時候該用委託,為什麼要用委託,委託有什麼好處

好多人一直在問 什麼時候該用委託,為什麼要用委託,委託有什麼好處 看完下面的文章你將茅塞頓開 看不懂的直接tddtds 概念雖然我不喜歡講太多 我們直接先來yy 個場景 我很喜歡打遊戲,但運氣不好每次打遊戲都會被主管看到,朱老闆不喜歡他的員工在上班的時 間打遊戲,所以朱老闆就跟主管說 以後員工在打遊...

什麼是委託?為什麼要使用委託?什麼是事件?

1 什麼是委託?首先宣告乙個委託 public delegate string islengthfive string s 下面寫幾個方法 public string dowork string a public string dosomework string b public string do...

為什麼要使用委託

使用c 但是大多數時候用不上委託,但是委託被討論得非常多,於是陷入自我懷疑,我是不是太菜了?我不禁問 為什麼要使用委託?可能試圖了解過委託的同學,都被告知委託跟函式指標的關係,又或者被告知乙個生活化的舉例 委託就是委託別人執行一件事。可能很多人嘗試了解委託的時候都停在這一步,他們了解了委託的寫法,尋...