濮阳杆衣贸易有限公司

主頁 > 知識庫 > .NET筆記之:Delegate內(nèi)部原理的分析

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

熱門標簽:五常地圖標注 地圖標注和認領(lǐng) 戶外地圖標注軟件手機哪個好用 長春呼叫中心外呼系統(tǒng)哪家好 電銷語音自動機器人 智能電話營銷外呼系統(tǒng) 凱立德導(dǎo)航官網(wǎng)地圖標注 萊蕪?fù)夂綦婁N機器人價格 鄭州400電話辦理 聯(lián)通

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

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

復(fù)制代碼 代碼如下:

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)造:(如下)

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

標簽:衢州 西寧 岳陽 西藏 紅河 宣城 湖州 福州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《.NET筆記之:Delegate內(nèi)部原理的分析》,本文關(guān)鍵詞  .NET,筆記,之,Delegate,內(nèi)部,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《.NET筆記之:Delegate內(nèi)部原理的分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于.NET筆記之:Delegate內(nèi)部原理的分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    钦州市| 乳源| 南丹县| 澜沧| 武川县| 宁海县| 蓬安县| 米泉市| 绵阳市| 罗江县| 饶河县| 乌兰浩特市| 武胜县| 正镶白旗| 甘德县| 万宁市| 岢岚县| 花垣县| 四平市| 平顶山市| 元朗区| 海城市| 贵定县| 滨州市| 扶余县| 东乡县| 信阳市| 博兴县| 清远市| 鹤岗市| 二连浩特市| 庐江县| 怀仁县| 行唐县| 麻江县| 新巴尔虎右旗| 文化| 铅山县| 汉沽区| 乡宁县| 万安县|