日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

.NET筆記之:Delegate內(nèi)部原理的分析_.Net教程

編輯Tag賺U幣
教程Tag:.NETDelegate添加

推薦:基于asp.net下使用jquery實現(xiàn)ajax的解決方法
本文以最簡單的方法為新手示范如何使用jquery實現(xiàn)ajax技術(shù)(所以本文是專為新手所寫,老鳥勿噴,大神此處省略一萬字)。至于什么是jquery什么是ajax,自己谷歌去

 首先我們要弄清楚什么是委托?相信大家對委托并不陌生,委托其實就是一種定義方法簽名的類型;有關(guān)于委托的詳細介紹,大家可以參考MSDN中作出的介紹,鏈接為:。這里我就不做具體介紹了;

  這篇文章我主要是想告訴大家委托的內(nèi)部到底是什么樣的結(jié)構(gòu),我們先通過一個簡單的demo來復習一下委托: 

復制代碼 代碼如下:www.hl5o.cn

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _01Delegate
{
//約束的指向方法的簽名,也就是一個強類型的指針
public delegate int AddDele(int a, int b);

class Program
{
static void Main(string[] args)
{
//定義一個委托變量,注意指向第一個方法的時候一定要用new關(guān)鍵字 后面的可以用+=
AddDele delStatic = new AddDele(Add);
//使用委托:靜態(tài)方法的委托
Console.WriteLine(delStatic(3, 4));

//實例方法的委托
Program p = new Program();
AddDele delInstance = new AddDele(p.AddInstance);
//輸出:9
Console.WriteLine(delInstance(4, 5));

Console.ReadKey();
}

//靜態(tài)方法
static int Add(int a, int b)
{
return a + b;
}

//實例方法
public int AddInstance(int a, int b)
{
return a + b;
}
}
}

  上面代碼中,分別使用委托對靜態(tài)方法和實例方法進行調(diào)用,如果這段代碼看起來還是很吃力的話,建議就我前面提供的鏈接好好的鞏固一下委托的相關(guān)內(nèi)容。

 

 

  開始重點:委托的內(nèi)部構(gòu)造

  委托內(nèi)部可以分為三個部分:分別為_target,_methodPtr和委托鏈;(拿上面的demo為例)

  _target:顧名思義,就是委托的目標函數(shù),如果是靜態(tài)方法的話,_target就為null;如果是實例方法的話,_target指向的就是當前的實例,上例中delInstance的_target的值為p(Program的實例);

  _methodPtr:方法指針,指向的是內(nèi)存中該方法的地址;

  委托鏈:通過+=操作形成的委托鏈,其實指向的就是一個個的方法;

  我簡單的畫了一張圖來描述委托內(nèi)部構(gòu)造:(如下)

這些都是本人的一些理解,如果有錯誤的地方歡迎大家指出并相互討論學習,希望這篇文章對大家理解委托有所幫助,同時也是為了提高自己而記錄下自己的一點學習積累。

分享:基于.NET中:自動將請求參數(shù)綁定到ASPX、ASHX和MVC的方法(菜鳥必看)
這篇文章的目的就是告訴初學者如何自動將客戶端用AJAX發(fā)送的參數(shù)自動綁定為強類型的成員屬性或方法參數(shù)

來源:模板無憂//所屬分類:.Net教程/更新時間:2013-05-02
相關(guān).Net教程