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

.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向Javascript傳遞變量兩種實現(xiàn)方法

    ASP.NET向Javascript傳遞變量兩種實現(xiàn)方法

    ASP.NET向Javascript傳遞變量兩種實現(xiàn)方法,需要的朋友可以參考下
    2012-12-12
  • 如何給asp.net core寫個簡單的健康檢查

    如何給asp.net core寫個簡單的健康檢查

    這篇文章主要給大家介紹了關(guān)于如何給asp.net core寫個簡單的健康檢查的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用asp.net core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C# 添加文字水印類代碼

    C# 添加文字水印類代碼

    可以添加文字水印的c# 類函數(shù)。
    2009-05-05
  • ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

    ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

    Gridview控件中并沒有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。
    2008-11-11
  • 談?wù)剬?NET中async/await的理解

    談?wù)剬?NET中async/await的理解

    本文介紹了.NET中異步編程的概念,包括async和await關(guān)鍵字的使用,以及異步編程的性能提升機制,異步編程通過非阻塞操作提高了程序執(zhí)行效率,減少了主線程的等待時間,感興趣的朋友一起看看吧
    2025-03-03
  • ASP.NET 提高首頁性能的十大做法

    ASP.NET 提高首頁性能的十大做法

    本文是我對ASP.NET頁面載入速度提高的一些做法,這些做法分為以下部分,希望對朋友們有所幫助。
    2010-05-05
  • IIS上部署Asp.net core Webapi的實現(xiàn)步驟

    IIS上部署Asp.net core Webapi的實現(xiàn)步驟

    ASP.NET Core Web API是構(gòu)建RESTful應(yīng)用程序的理想平臺,本文主要介紹了IIS上部署Asp.net core Webapi的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • Repeater控件動態(tài)變更列(Header,Item和Foot)信息實現(xiàn)思路

    Repeater控件動態(tài)變更列(Header,Item和Foot)信息實現(xiàn)思路

    需求開發(fā)一個小報表,顯示最近五個月的summary的數(shù)量統(tǒng)計,報表會隨月份的變化而變化,接下來為大家詳細介紹下實現(xiàn)方法,感興趣的各位不要錯過了哈
    2013-03-03
  • ASP.NET MVC5網(wǎng)站開發(fā)文章管理架構(gòu)(七)

    ASP.NET MVC5網(wǎng)站開發(fā)文章管理架構(gòu)(七)

    繼上一篇把member的用戶部分完成,現(xiàn)在開始做文章管理部分。文章部分根據(jù)涉及顯示現(xiàn)實文章列表,發(fā)布文章,修改和刪除文章等功能。最終的實現(xiàn)目標是使用權(quán)限來控制用戶是否能進行相應(yīng)操作,管理員權(quán)限的會顯示全部文章列表和我的文章列表,普通用戶只顯示我的文章列表
    2015-09-09
  • Asp.Net 網(wǎng)站優(yōu)化系列之數(shù)據(jù)庫優(yōu)化分字訣上 分庫

    Asp.Net 網(wǎng)站優(yōu)化系列之數(shù)據(jù)庫優(yōu)化分字訣上 分庫

    當我們的數(shù)據(jù)量很小的時候,我們會把用戶表,博客表,論壇表,閃存表等等都砸在一個庫里,我們的業(yè)務(wù)增長的很好,在不久之后我們盡力的優(yōu)化了查詢,但是效果依然不佳,這時候用分字訣的時機到了。
    2010-06-06

最新評論

辽宁省| 梁山县| 乌拉特前旗| 平潭县| 谢通门县| 思南县| 奎屯市| 黑山县| 长治县| 盖州市| 阳泉市| 胶州市| 宝山区| 光泽县| 沾化县| 金平| 阳曲县| 萍乡市| 昌乐县| 黑水县| 富川| 宣城市| 兴宁市| 湘潭县| 多伦县| 当阳市| 临夏市| 西乡县| 平定县| 红桥区| 佛坪县| 清新县| 红河县| 嘉禾县| 南岸区| 义乌市| 阿图什市| 天全县| 怀化市| 普兰县| 河池市|