1. 程式人生 > >C#筆記整理_委託

C#筆記整理_委託

初入部落格  序言

今天算是我剛剛正式的開始系統性的整理.Net,對於一個嘗試想成為高階.Net軟體工程師的我,路途還有一點迷茫, 只能先整理一下.Net的基礎知識外,我都不知道如何進階成為一個高階程式設計師,應該學習哪些知識,且先行,走之看之把!

.Net 委託 學習 什麼是委託?  委託是一種特殊的型別(class),用途是來實現對一種方法的封裝。在某種事件發生時,自動 呼叫該方 法。好處顯然易見,它使使用者可以自定義自己的方法實現,通過封裝,CLR會在相應事件激發時呼叫你定義的方法,實現你的功能 委託是由什麼構成的? 委託實列=> 1 .宣告一個委託型別   delegate int AddDel(int a,int b); 2.建立一個委託物件並且傳入一個滿足委託型別約束條件的函式 AddDel del=new AddDel(AddstaticFunc); 委託的內部分為三個層次
1._methodPtr(方法指標) 用來指向的方法的記憶體地址 2._target (目標物件) 及傳入的方法,若傳入為靜態方法時,為空 3.委託鏈 ==>就是一個委託陣列,可以方便後面的委託+=,實現多播委託 什麼是多播委託?且多播委託是如何插入的?插入後假如每一樣個委託都有返回值,多播委託後,取一個返回值會取哪些? 1.多播委託就是當我們建立一個委託以後,遇到一個相同型別的方法想要呼叫這個型別的委託的時候,我們可以不用再New一個新的委託的物件,而直接在上一個建立的委託物件中+=然後傳入需要呼叫的方法,這樣,委託鏈上的陣列就會按照順序添加了一個新的委託元素。
3.多播委託拿到委託返回值最後一個指向的方法的執行結果,也就是隻會取最後一個委託的返回值 多播委託實列==>基於上面的委託 del+=new AddDel(AddStaticFunc);

什麼是泛型委託 泛型委託的實列==> FuncfuncDemo=new Func(AddstaticFunc); Action ActionDemo=new  Action(Addstatic Action); 這兩個泛型委託的差別是Func最後一個int(型別)始終代表返回值而Action是沒有返回值的 且Func<前面可以有16個型別*(每個型別用“,”隔開),一個返回型別> 泛型委託不同於普通委託,它的約束條件可以用任意型別(T)代替,而且不用宣告委託
什麼是匿名方法? 前面說的泛型的方法總覺的還是太麻煩了,需要傳入一個函式,那可不可以將這個函式寫在委託裡面呢?當然可以,於是就出現了匿名方法 匿名方法實列==>FuncfuncDemo=delegate(int a,int b)=>{return a+b;}; 在後面的地方直接用delegate模擬一個函式,簽名是兩個Int型別,返回了a+b的值,這樣就直接把一個方法的內容放到了委託後面 什麼是Lambda語句 在上述的匿名方法中 ,再省去delegate就構成了我們的Lambda表示式 Lambda語句實列==>FuncfuncDemo=(int a,int b)=>{return a+b;}; 什麼是Lambda表示式 在上述的Lambda語句語句中 將return和{}給省略,把最後的方法體變成一個表示式,就變成一個Lambda表示式 Lambda表示式實列==>FuncfuncDemo=(int a,int b)=>a+b;自動返回表示式     而在Lambda表示式中=後面括號裡面的型別也可以省略,可以直接變成 FuncfuncDemo=(a,b)=>a+b; 當=後面的括號裡面的型別只有一個時,那麼括號可以不寫 FuncfuncDemo=a=>a+b;