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

基于C#委托的深入分析

 更新時(shí)間:2013年04月26日 17:23:27   作者:  
本篇文章介紹了,基于C#委托的深入分析。需要的朋友參考下

1.委托的定義

委托可以看成是一種數(shù)據(jù)類型,可以用于定義變量能接受的值只能是一個(gè)方法。

委托簡(jiǎn)單的示例:

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

namespace DelegateDemo
 {
     class Program
     {
         public delegate int MathOptDelegate(int value1,int value2);
         public int add(int value1, int value2)
         {
             return value1 + value2;
         }

         static void Main(string[] args)
         {
             MathOptDelegate mod;
             Program p = new Program();
             mod =p.add;
             Console.WriteLine(mod(3,5));
             Console.ReadKey();
         }
     }
 }

利用委托的構(gòu)造函數(shù)創(chuàng)建委托
復(fù)制代碼 代碼如下:

namespace DelegateDemo
 {
     class Program
     {
         public delegate int MathOptDelegate(int value1,int value2);
         public int add(int value1, int value2)
         {
             return value1 + value2;
         }

         static void Main(string[] args)
         {

             Program p = new Program();
             MathOptDelegate mod = new MathOptDelegate(p.add);
             Console.WriteLine(mod(3,5));
             Console.ReadKey();
         }
     }
 }

從這個(gè)示例中可以得出這樣的直觀印象:

委托可以堪稱是一個(gè)方法的容器,將某一個(gè)具體的方法裝入后,就可以把它當(dāng)成方法一樣使用。

2.委托的調(diào)用列表

從上一個(gè)例子看,委托變量可以引用某一個(gè)方法,調(diào)用它就相當(dāng)于調(diào)用這個(gè)方法。

如果委托今年僅是方法調(diào)用的另一種形式,那何必多此一舉引入委托這一特性?直接調(diào)用方法不是更簡(jiǎn)單明了?

因?yàn)槲凶兞坎粌H可以引用另一個(gè)方法,還可以組合多的方法并批量執(zhí)行它們。

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

namespace DelegateDemo2
{
    class Program
    {
        public delegate void MyDelegate(String str);
        public static void hello(String str)
        {
            Console.WriteLine(str+"你好");
        }
        public static void goodbye(String str)
        {
            Console.WriteLine(str+"再見");
        }
        static void Main(string[] args)
        {
            MyDelegate a,b,c,d;
            a = Program.hello;
            a("a");
            b = Program.goodbye;
            b("b");
            c = a + b;//等價(jià)將兩個(gè)方法體合并
            c("c");// c你好 c再見
            d = c - a;
            d("d");//d再見
            Console.ReadKey();

           
        }
    }
}

像C這樣的委托變量可稱為多路委托變量。

可以用加法運(yùn)算符來組合單個(gè)委托變量為多路委托變量。類似的,也可以使用減法運(yùn)算符來從一個(gè)多路委托變量中移除某個(gè)委托變量。

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

namespace DelegateDemo2
{
    class Program
    {
        public delegate void MyDelegate(String str);
        public static void hello(String str)
        {
            Console.WriteLine(str+"你好");
        }
        public static void goodbye(String str)
        {
            Console.WriteLine(str+"再見");
        }
        static void Main(string[] args)
        {
            MyDelegate a,b,c,d;
            a = Program.hello;
            a("a");
            b = Program.goodbye;
            b("b");
            c = a + b;//等價(jià)將兩個(gè)方法體合并
            c("c");// c你好 c再見
            d = c - a;
            d("d");//d再見
            Delegate[] ds;
            ds = c.GetInvocationList();
            foreach(Delegate s in ds)
            {
                Console.WriteLine(s);
                //DelegateDemo2.Program+MyDelegate
                //DelegateDemo2.Program+MyDelegate
            }
            Console.WriteLine(ds.Length);
            Console.ReadKey();

           
        }
    }
}

如果委托定義的方法有返回值,則多路委托變量的返回值為委托調(diào)用列表中最后一個(gè)方法的返回值,中間調(diào)用的方法返回值會(huì)被丟棄。

使用泛型委托:

 Func系列委托

以下是Func熄了委托的定義,依其泛型類型參數(shù)的多少有多個(gè)重載形式:

public delegate TResult Func<Tresult>();

public delegate TResult Func<T,Tresult>();

 

相關(guān)文章

  • 基于C#實(shí)現(xiàn)PDF按頁分割文件和分頁合并

    基于C#實(shí)現(xiàn)PDF按頁分割文件和分頁合并

    iTextSharp 是一個(gè)開源的 PDF 處理庫,用于在 C# 程序中創(chuàng)建、編輯和處理 PDF 文件,本文將使用iTextSharp實(shí)現(xiàn)C# PDF分割與合并,感興趣的可以了解下
    2025-03-03
  • C#集合之位數(shù)組的用法

    C#集合之位數(shù)組的用法

    這篇文章介紹了C#集合之位數(shù)組的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)UI控件輸出日志的方法詳解

    C#實(shí)現(xiàn)UI控件輸出日志的方法詳解

    一般情況下,我們的日志文件是用來記錄一些關(guān)鍵操作或者異常,并且是后臺(tái)存儲(chǔ),并不對(duì)外開放的,但是也有些時(shí)候,需要將一些操作步驟、記錄等直接顯示在窗體上。本文就將利用UI控件輸出日志效果,需要的可以參考一下
    2022-10-10
  • 介紹C# 泛型類在使用中約束

    介紹C# 泛型類在使用中約束

    這篇文章介紹了C# 泛型類在使用中約束,有需要的朋友可以參考一下
    2013-09-09
  • c#異步發(fā)送郵件的類

    c#異步發(fā)送郵件的類

    這篇文章主要介紹了使用c#異步發(fā)送郵件的類,大家參考使用吧
    2014-01-01
  • 基于C#實(shí)現(xiàn)語音識(shí)別功能詳解

    基于C#實(shí)現(xiàn)語音識(shí)別功能詳解

    在.NET4.0中,可以借助System.Speech組件讓電腦來識(shí)別我們的聲音。本文將利用該組件實(shí)現(xiàn)語音識(shí)別功能,文中實(shí)現(xiàn)過程講解詳細(xì),需要的可以參考一下
    2022-04-04
  • C#?漢明距離的算法實(shí)現(xiàn)

    C#?漢明距離的算法實(shí)現(xiàn)

    漢明距離是用來衡量?jī)蓚€(gè)等長(zhǎng)字符串之間差異的度量指標(biāo),本文主要介紹了C#?漢明距離的算法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • c#?chart縮放,局部放大問題

    c#?chart縮放,局部放大問題

    這篇文章主要介紹了c#?chart縮放,局部放大問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • C# 數(shù)組中的 indexOf 方法及使用

    C# 數(shù)組中的 indexOf 方法及使用

    這篇文章主要介紹了C# 數(shù)組中的 indexOf 方法以及indexof方法的使用講解,需要的朋友可以參考下
    2018-02-02
  • 舉例講解C#中自動(dòng)實(shí)現(xiàn)的屬性

    舉例講解C#中自動(dòng)實(shí)現(xiàn)的屬性

    這篇文章主要介紹了C#中自動(dòng)實(shí)現(xiàn)的屬性,包括使用自動(dòng)實(shí)現(xiàn)的屬性實(shí)現(xiàn)輕量類的方法,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

永州市| 涪陵区| 太仓市| 静宁县| 三门峡市| 陆丰市| 陇南市| 岗巴县| 灵石县| 江达县| 萨迦县| 砀山县| 威宁| 桂东县| 文安县| 通道| 丹凤县| 闽侯县| 江华| 南陵县| 扶风县| 罗甸县| 长乐市| 济南市| 肥乡县| 乌审旗| 钟祥市| 六枝特区| 伊金霍洛旗| 南平市| 西充县| 手机| 大姚县| 武邑县| 板桥市| 阿图什市| 固安县| 滕州市| 锡林浩特市| 莆田市| 墨玉县|