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

C#中的多播委托和泛型委托

 更新時(shí)間:2022年05月04日 16:25:59   作者:農(nóng)碼一生  
這篇文章介紹了C#中的多播委托和泛型委托,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

多播委托

簡(jiǎn)介

  • 每一個(gè)委托都是繼承自MulticastDelegate,也就是每個(gè)都是多播委托。
  • 帶返回值的多播委托只返回最后一個(gè)方法的值
  • 多播委托可以用加減號(hào)來(lái)操作方法的增加或者減少。
  • 給委托傳遞相同方法時(shí) 生成的委托實(shí)例也是相同的(也就是同一個(gè)委托)

代碼實(shí)現(xiàn)

 	//聲明委托
    delegate void MulticastTest();
    public class MulticastDelegateTest
    {
        
            
        public void Show()
        {
            MulticastTest multicastTest = new MulticastTest(MethodTest);
            multicastTest();



            Action action =new Action(MethodTest);
            action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest2));
            action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest3));
            action = (Action)MulticastDelegate.Remove(action, new Action(MethodTest3));
            action();

            //等同于上面
            action = MethodTest;
            action += MethodTest2;
            action += MethodTest3;
            action -= MethodTest3;

            foreach (Action action1 in action.GetInvocationList())
            {
                action1();
            }
            Console.WriteLine("==========");
            action();
                        


            Func<string> func = () => { return "我是Lambda"; };
            func += () => { return "我是func1"; };
            func += () => { return "我是func2"; };
            func += GetTest;
            func += GetTest; //給委托傳遞相同方法時(shí) 生成的委托實(shí)例也是相同的(也就是同一個(gè)委托)
            
            string result = func();
            Console.WriteLine(result);
            Console.WriteLine("==========");
        }


        #region 委托方法
        public void MethodTest()
        {
            Console.WriteLine("我是方法MethodTest()1");
        }

        public void MethodTest2()
        {
            Console.WriteLine("我是方法MethodTest()2");
        }

        public void MethodTest3()
        {
            Console.WriteLine("我是方法MethodTest()3");
        }

        public string GetTest()
        {
            return "我是方法GetTest()";
        }
        #endregion
    }

泛型委托

代碼實(shí)現(xiàn)

    //泛型委托聲明
    delegate void GenericDelegate<T>(T t);
    public class GenericDelegate
    {
        public static void InvokeDelegate()
        {
            GenericDelegate<string> genericDelegate = new GenericDelegate<string>(Method1);
            genericDelegate("我是泛型委托1");

            //官方版本(不帶返回值)
            Action<string> action = new Action<string>(Method1);
            action("我是泛型委托1");
            //Action<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>

            GenericDelegate<int> genericDelegate1 = new GenericDelegate<int>(Method2);
            genericDelegate1(2);

            //官方版本(帶回值)
            Func<string, string> func = new Func<string, string>(Method3);
            string ret = func("我是帶返回值Func委托");
            Console.WriteLine( ret );
            //Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string,string>
        }



        #region 委托方法

        public static void Method1(string str)
        {
            Console.WriteLine(str);
        }

        public static void Method2(int num)
        {
            Console.WriteLine("我是泛型委托2 "+num);
        }

        public static string Method3(string str )
        {
            return str;
        }

        #endregion
    }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#把UNICODE編碼轉(zhuǎn)換為GB編碼的實(shí)例

    C#把UNICODE編碼轉(zhuǎn)換為GB編碼的實(shí)例

    下面小編就為大家?guī)?lái)一篇C#把UNICODE編碼轉(zhuǎn)換為GB編碼的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#中緩存的基本用法總結(jié)

    C#中緩存的基本用法總結(jié)

    這篇文章主要介紹了C#中緩存的基本用法,對(duì)C#初學(xué)者來(lái)說(shuō)是很有必要熟練掌握的內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • C#保存listbox中數(shù)據(jù)到文本文件的方法

    C#保存listbox中數(shù)據(jù)到文本文件的方法

    這篇文章主要介紹了C#保存listbox中數(shù)據(jù)到文本文件的方法,涉及C#操作listbox數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 淺析C#?AsyncLocal如何實(shí)現(xiàn)Thread間傳值

    淺析C#?AsyncLocal如何實(shí)現(xiàn)Thread間傳值

    這篇文章主要是來(lái)和大家一起討論一下C#?AsyncLocal如何實(shí)現(xiàn)Thread間傳值,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C# 實(shí)現(xiàn)FTP上傳資料的示例

    C# 實(shí)現(xiàn)FTP上傳資料的示例

    這篇文章主要介紹了C# 實(shí)現(xiàn)FTP上傳資料的示例,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-12-12
  • 通過(guò)?C#/VB.NET?代碼將?Excel?工作表拆分為單獨(dú)的文件

    通過(guò)?C#/VB.NET?代碼將?Excel?工作表拆分為單獨(dú)的文件

    這篇文章主要介紹了通過(guò)C#/VB.NET代碼將Excel工作表拆分為單獨(dú)的文件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • C#實(shí)現(xiàn)異步操作的幾種方式

    C#實(shí)現(xiàn)異步操作的幾種方式

    在C#中,異步操作可以提高程序的性能和響應(yīng)能力,本文主要介紹了C#實(shí)現(xiàn)異步操作的幾種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • C#獲取電腦硬件CPU信息的示例代碼

    C#獲取電腦硬件CPU信息的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#獲取電腦硬件之CPU信息,以及它都有那些品牌,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2024-01-01
  • Unity3D中腳本的執(zhí)行順序和編譯順序

    Unity3D中腳本的執(zhí)行順序和編譯順序

    在Unity中可以同時(shí)創(chuàng)建很多腳本,并且可以分別綁定到不同的游戲?qū)ο笊希鼈兏髯远荚谧约旱纳芷谥羞\(yùn)行。與腳本有關(guān)的也就是編譯和執(zhí)行啦,本文就來(lái)研究一下Unity中腳本的編譯和執(zhí)行順序的問(wèn)題。
    2014-11-11
  • C#實(shí)現(xiàn)簡(jiǎn)單的天氣預(yù)報(bào)示例代碼

    C#實(shí)現(xiàn)簡(jiǎn)單的天氣預(yù)報(bào)示例代碼

    這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的天氣預(yù)報(bào)示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評(píng)論

霞浦县| 抚州市| 诸暨市| 绥中县| 弥勒县| 清徐县| 瑞昌市| 台东市| 麦盖提县| 秀山| 弋阳县| 大石桥市| 江源县| 丽水市| 临高县| 澄城县| 泾川县| 沧州市| 宁海县| 武汉市| 大城县| 桃源县| 文水县| 新丰县| 沙洋县| 曲麻莱县| 安宁市| 丹江口市| 墨竹工卡县| 德令哈市| 巩义市| 清镇市| 张家川| 漠河县| 新化县| 江西省| 喀喇沁旗| 苍溪县| 天津市| 驻马店市| 施甸县|