欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

 首先我們要弄清楚什么是委托?相信大家對委托并不陌生,委托其實就是一種定義方法簽名的類型;有關(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í)積累。

相關(guān)文章

  • asp.net中利用ashx實現(xiàn)圖片防盜鏈的原理分析

    asp.net中利用ashx實現(xiàn)圖片防盜鏈的原理分析

    盜鏈的危害我就不說了,網(wǎng)上有很多。下面是asp.net下利用ashx的防盜鏈原理分析
    2008-09-09
  • 水晶報表圖片不顯示兩種問題分析及解決方法

    水晶報表圖片不顯示兩種問題分析及解決方法

    水晶報表布置后里面的圖片不顯示的情況,分兩種:一是:水晶報表工具欄上的圖片不顯示;二是:水晶報表中的的圖片對象不顯示,接下來將分別介紹解決方法,感興趣的朋友可以了解下啊
    2013-01-01
  • 利用.net core實現(xiàn)反向代理中間件的方法

    利用.net core實現(xiàn)反向代理中間件的方法

    這篇文章主要給大家介紹了關(guān)于利用.net core實現(xiàn)反向代理中間件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 談?wù)?net對象生命周期(垃圾回收)

    談?wù)?net對象生命周期(垃圾回收)

    這篇文章主要介紹了談?wù)?net對象生命周期(垃圾回收),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • ASP.NET MVC Admin主頁快速構(gòu)建

    ASP.NET MVC Admin主頁快速構(gòu)建

    這篇文章主要為大家詳細介紹了ASP.NET MVC Admin主頁快速構(gòu)建的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • asp.net網(wǎng)站首頁根據(jù)IP自動跳轉(zhuǎn)指定頁面的示例

    asp.net網(wǎng)站首頁根據(jù)IP自動跳轉(zhuǎn)指定頁面的示例

    本文介紹的程序主要實現(xiàn)根據(jù)IP地址或地址段或IP所在城市進行自動跳轉(zhuǎn)到指定頁面的功能,需要的朋友可以參考下
    2014-02-02
  • asp.net 購物車的實現(xiàn)淺析

    asp.net 購物車的實現(xiàn)淺析

    我從來沒有進行過正式的web開發(fā),但是我一直喜歡web,所以這篇文章也是我轉(zhuǎn)行web的一個開始吧?;蚨嗷蛏傥乙矃⒖剂藥讉€網(wǎng)站的實現(xiàn)(當然了,只是看看大概的功能而已),所以也請大家多多指教。
    2011-02-02
  • 輕量級ORM框架Dapper應(yīng)用之實現(xiàn)CURD操作

    輕量級ORM框架Dapper應(yīng)用之實現(xiàn)CURD操作

    這篇文章介紹了使用Dapper實現(xiàn)CURD操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Asp.net中時間格式化的6種方法詳細總結(jié)

    Asp.net中時間格式化的6種方法詳細總結(jié)

    數(shù)據(jù)控件綁定時格式化日期方法/用DataBinder.Eval進行數(shù)據(jù)綁定時/直接用ToString方法轉(zhuǎn)換日期顯示格式/用String類轉(zhuǎn)換日期顯示格式等等,感興趣的你了解下哦,或許對你學(xué)習(xí)時間格式化有所幫助
    2013-02-02
  • .NET中OpenFileDialog使用線程報錯的解決方法

    .NET中OpenFileDialog使用線程報錯的解決方法

    這篇文章主要為大家詳細介紹了.NET中OpenFileDialog使用線程報錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論