11委託演繹中國足球隊打進世界盃

2021-09-07 22:34:34 字數 2244 閱讀 2832

當針對不同的型別採取相同的演算法時,我們想到了泛型。當根據相同的引數列表,採取不同的演算法時,我們可以考慮使用委託。就用委託演繹中國男足進入2023年世界盃吧。

對球的不同處理方式,抽象成如下方法:

1:  

private

static

void passball(string ball)

2:
5:
6:  

private

static

void stopball(string ball)

7:
10:
11:  

private

static

void transferpball(string ball)

12:
15:
16:  

private

static

void runball(string ball)

17:
20:
21:  

private

static

void scoreballbyhead(string ball)

22:
25:
26:  

private

static

void scoreballbyinnerfeet(string ball)

27:
30:
31:  

private

static

void scoreballbyouterfeet(string ball)

32:
發現儘管方法名,方法體內的實現邏輯不一樣,但引數列表是一樣的,都是針對球的,委託登場。

public

delegate

void playball(string ball);

委託從本質上來講就是乙個類,所以也可以把委託作為方法引數。

private

static

void game(string ball, playball playballdelegate)

主程式中先把各種方法註冊到委託,然後在game方法中使用不同的委託所代表的方法,控制球的處理。

1:  

static

void main(string args)

2:
結果:

□ 委託也可以不使用+=

playball del1 = passball;

playball del2 = stopball;    

game("球",del1);   

game("球",del2);   

□ 委託賦值是用=,委託繫結是用+=,兩者不能混淆

如果以上來就:

playball del1 += passball;  

這樣會報"使用了未賦值的區域性變數"錯,因為委託變數還沒有賦值,正所謂"皮之不存毛將焉附"。

□ 可以通過帶引數的委託建構函式為委託變數賦值

playball del1 = new playball(passball);

del1 += stopball;

□ 不可以通過不帶引數的委託建構函式為委託變數賦值

playball del1 = new playball();

這樣會報"沒有0個引數的過載"的錯。

□ 也可以取消委託中的某個方法的繫結

playball del1 = new playball(passball);

del1 += stopball;

del1 += scoreballbyhead;

del1 -= stopball;

□ 介面與委託

共同點:

隔離了變化。

不同點:

介面不僅引數列表一樣,方法名也一樣。

介面可能更適合單元測試。

體驗:可能在小範圍之內,使用委託比較好。

一旦涉及到分層、擴充套件、單元測試,可能使用介面比較好。

中國足球隊的大哥們

你們太讓我失望了。作為乙個 了10年假a的你們的超級鐵桿粉絲,我第一次對你們深深感到失望了,不,不是失望,是絕望。俗話說 養兵千日,用兵一時 我沒有想到,你們練了10年假球,到了這最關鍵的時刻,居然給我掉了鍊子。我傷心,我難過,我出離地憤怒!10年假球你們都 白練了!如果僅僅是因為比賽打得差,技不如...

2030中國足球稱霸世界

2021年,雖然世界盃從32支球隊擴充至48支球隊,但中國隊衝擊世界盃再次失敗。憤怒點燃了全國球迷,舉國聲討之下,國家開始對中國足協進行大刀闊斧的市場化改革和嚴格的監督。2022年,除it 行政 財務人員以外,足協 被要求有職業足球運動員或教練員經歷才可以擔任。從事其他運動和職業的一律不得擔當足協主...

中國足球為啥進不了世界盃

中國足球為啥進不了世界盃 中國足球隊的表現已經是超水平發揮,這是 經濟學人 給出的分析結果。你信嗎?上合峰會在青島召開,中國的 溫度 呼呼地上公升。俄羅斯世界盃就要到來了,世界盃的溫度也噌噌地 經濟學人 也蹭起了中國與世界盃的熱度。最近一期的 經濟學人 搞了一篇文章,推出了乙個模型,可以分析影響一國...