最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET筆記之:Delegate內部原理的分析

 更新時間:2013年05月02日 12:04:30   作者:  
本篇文章介紹了,基于.NET中Delegate內部原理的分析。需要的朋友參考下

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

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

復制代碼 代碼如下:

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關鍵字 后面的可以用+=
             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)方法和實例方法進行調用,如果這段代碼看起來還是很吃力的話,建議就我前面提供的鏈接好好的鞏固一下委托的相關內容。

 

  開始重點:委托的內部構造

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

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

  _methodPtr:方法指針,指向的是內存中該方法的地址;

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

  我簡單的畫了一張圖來描述委托內部構造:(如下)

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

相關文章

最新評論

通化市| 册亨县| 宜宾县| 东明县| 阿拉尔市| 宝鸡市| 和林格尔县| 灵寿县| 棋牌| 玉树县| 波密县| 体育| 宜川县| 龙井市| 右玉县| 乌鲁木齐县| 松江区| 延安市| 平江县| 清苑县| 吴堡县| 松溪县| 平遥县| 海南省| 邹城市| 高淳县| 广安市| 鹰潭市| 高尔夫| 莱阳市| 天水市| 化州市| 峨边| 余江县| 芷江| 池州市| 贵阳市| 德安县| 山丹县| 公主岭市| 武穴市|