大白話講解C 中的委託

2022-09-26 01:36:13 字數 1316 閱讀 7011

有一天,你寫了好多好多帶「形參」的建構函式(就是「方法」,同義),而且需要向這些建構函式裡傳遞同樣的「實參」,然後你就憨憨地乙個乙個函式的呼叫並賦予同樣的「實參」,這一天就這麼過去了...

又過了幾天,你又要再一次呼叫這麼多函式了,你再老老實實地乙個乙個函式進行呼叫?!聰明的你,肯定會想:真tm麻煩!有沒有一勞永逸的辦法呢?

nlmdhvi你需要的正是----「委託」

來,先看乙個簡單的例子,要表述的是----有一位貴賓將要作客一家豪華的酒店,老闆(boss)下發了通知,他的兩個助理(ass1和ass2)分別要通知到女服務員(waiteress)和廚師(cooker),讓他們該幹啥幹啥去。

class program

//宣告乙個叫做「convey_dele」的委託,形參為「string command」

public delegate void convey_dele(string command);

//構造乙個名為「waiteress」的函式,構nlmdhvi造函式的形參必須與委託形參一致!

public static void waiteress(string command)

public static void cooker(string command)

}執行後的結果:

這樣,老闆發出任何指令,下級都該幹啥幹啥去,老闆不需要知道下級的具體動作是什麼,只要幹的好,完成就可以。

聰明的你,又會想,**能否再簡化和多樣化呢?可以。上面**可以更改為:

class program

; //匿名函式也太麻煩了,還得寫「delegate」,改用乙個符號來表示,術語「蘭姆達表示式」

ass2 = (string command) => ;

//等同於 ass1 = ass1 + ass2,基本的「加等」運算子,「減等」也是可以使用的~ 比如:若ass1 = ass1 + ass2,那ass1 -= ass1等同於ass1=ass2

ass1 += ass2;

ass1("一位貴賓要來了!");

console.readkey();

}public delegate void convey_dele(string command);

}執行後的結果與之前未簡化前一模一樣。這樣的簡化寫法還是有很強的「可讀性」的,「匿名函式」和「蘭姆達表示式」還有更簡單的寫法,只要是乙個形參,還可以連形參都省略,知道這回事就行了...

這樣,我們在呼叫眾多函式的時候就可以靈活運用委託來簡化**和「搬磚」的繁程式設計客棧瑣勞動。

好了,初學委託的內容就先講這麼多吧,我也是在一邊學習,一邊去理解的,在寫部落格時表現出來的有許多不足之處請廣大園友指出,我不吝賜nlmdhvi教!

大白話C 委託與事件

委託機制,是c 語言很重要的機制。從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但...

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...