委託就是當方法不知道具體的實現並且不知道具體由哪個物件的方法來實現時,委託可以理解為獨特的介面,就是只封裝乙個方法的介面。需要由別人來實現。
兩者在功能上是一樣的!
區別在於:
1.委託只是單一的方法,而介面可以封裝多個方法
2.委託只約束方法的簽名,而介面約束方法的名稱
所以從多型的角度來將,委託可以認為是輕量級的介面。
最簡單的例子1:
array有乙個sort方法,如果要實現自定義排序,有兩個過載:委託和介面
例子2現在我要對一系列資料進行排序,而排序演算法可能比較複雜,我不會自己寫,我想呼叫array.sort方法,微軟為我們提供了快速排序演算法。
但是這裡有乙個問題——我要實現自定義排序規則,比如對於字串,預設的是按字母順序,但現在我想這樣排序:
按字串長度排序,只有當長度不同時,再按字母排序。
顯然,微軟不可能提供這樣「個性」的排序方法,那是不是說,就必須讓我們自己去寫快速排序演算法呢?
不需要!
我們只需要使用委託,就能實現這個要求:
stringstrs="i like c# very much".split();
array.sort(strs,rule);
int void rule(string first,string second)
顯然,我並不需要知道快速排序演算法的邏輯,我只需要告之排序規則,就實現了我的個性排序。
試問:如果沒有委託,你如何解決這個問題?
c 委託與事件
c 委託與事件 心得 c 用委託來實現事件通知機制。委託相當與c 函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。實現步驟有以下幾步 1.申明委託,2.定義呼叫者和呼叫的函式,3.定義被呼叫者和具體實現的函式 被呼叫的函式 1.申明委託 在包裡或者類裡,public public ...
C 委託與事件
在c 中,委託類似於c 中的 機制,宣告乙個委託型別,可以分別採用例項方法和靜態方法例項化了委託,所不同的是採用靜態方法例項化的委託,它的 target 屬性為null 而用例項方法例項化的委託,它的 target 屬性為該例項。但是這裡要注意,如果你用 console.writerline del...
C 委託與事件
1.泛型委託 泛型型別 是可適應對多種資料型別執行相同功能的單個程式設計元素。定義泛型類或過程時,無需為可能需要對其執行該功能的每個資料型別定義單獨版本。就好比是帶有可拆卸刀頭的螺絲刀。您檢查需要擰動的螺絲,然後選擇適合該螺絲的刀頭 一字 十字 星形 將正確的刀頭插入到螺絲刀柄上後,您就可以使用螺絲...