博文技術有限,重在學習交流,有錯誤大家指正。
思路:傳統的方法呼叫------>委託的出現解決了什麼問題---->委託的繫結方法----->總結
1.傳統的方法呼叫
view code
class program缺點:100個方法就要呼叫100次,如果每個人 對方法的需求不一樣,就不能很好的處理了。有人想展示跳舞,有人想唱歌,更有想一起展示。static
void dancing(string name)
會跳舞",name);
}static
void singing(string name)
會唱歌",name);
}}
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輸出:mr.w會跳舞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);
}}
jack會唱歌
herry會跳舞
herry會唱歌
哈哈,問題解決了,它沒有利用switch語句,這樣就可以根據不同的人,選擇不同的才藝表演了。
有人可能以為這樣和寫傳統的方法呼叫 有什麼區別,你注意到沒?你注意到沒:每次增加才藝,都必須在personcy()方法內修改,這樣使用委託帶入,即使
我們增加了才藝的方法,也只需要在委託中帶入即可。擴充套件性變優秀了。
注:上面還解決,乙個人多個才藝的問題,但是做法不標準,一般我們是利用 多播委託來完成的。
4.多播委託
view code
public思考:看起來還是不簡便,能否讓 personcy()也省略,直接讓委託呼叫方法,答案是可以的。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);
}}
如下: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 但是大多數時候用不上委託,但是委託被討論得非常多,於是陷入自我懷疑,我是不是太菜了?我不禁問 為什麼要使用委託?可能試圖了解過委託的同學,都被告知委託跟函式指標的關係,又或者被告知乙個生活化的舉例 委託就是委託別人執行一件事。可能很多人嘗試了解委託的時候都停在這一步,他們了解了委託的寫法,尋...