国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

深入委托與多播委托的詳解

2020-01-24 03:13:13
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    class 簡單的委托實例
    {
        public static double Area(double Val)
        {
            return Val * 2;
        }
        public static double Scare(double Val)
        {
            return Val * Val;
        }
    }
    class Test
    {
        public delegate double delegateTest(double dd);
        static void Main()
        {
            //實例化了個委托數組,(一旦定義了委托類,就可以實例化它的實例)
            delegateTest[] Operations =
                {
                    //說明了委托的一種方式,把方法組合到數組
                  new delegateTest(簡單的委托實例.Area),
                  new delegateTest(簡單的委托實例.Scare)
                };
            for (int i = 0; i < Operations.Length; i++)
            {
                Console.WriteLine("Using Operations[{0}]", i);
                Test MyTest = new Test();
                //把委托傳遞給ProcessDelagate()這個方法,Operations[0]可以理解成delegateTest Operations =new delegateTest(簡單的委托實例.Area);調用ProcessDelagate這個方法的時候Operations代理的方法是簡單的委托實例.Area
                MyTest.ProcessDelagate(Operations[i], 12.0);
                MyTest.ProcessDelagate(Operations[i], 2.0);
                Console.WriteLine();
            }
        }
        //把委托作為一個參數傳遞到ProcessDelagate()第一個參數中
        void ProcessDelagate(delegateTest Action, double d)
        {
            double Result = Action(d);
            Console.WriteLine("提供的值是{0},結果是{1}", d, Result);
        }
    }
}

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    //如果要多次調用這個方法,那么就要多次調用這個委托,委托包含多個方法,這個種委托就是多播委托!
    class 多播委托
    {
        //用的是void沒有返回值
        public delegate void DelageteTest(double val);
        static void Main()
        {
            //多播委托中添加2個方法
            DelageteTest MyTest = new DelageteTest(Test.Area);
            MyTest += new DelageteTest(Test.Scare);
            //下面的代碼跟上面的3行代碼是等價的
            //DelageteTest MyTest;
            //DelageteTest Test1 = new DelageteTest(Test.Area);
            //DelageteTest Test2 = new DelageteTest(Test.Scare);
            //MyTest = Test1 + Test2;
            多播委托 多 = new 多播委托();
            多.OPreation(MyTest, 2.0);
            多.OPreation(MyTest, 12.0);
        }
        void OPreation(DelageteTest Action, double d)
        {
            Action(d);
        }
    }
    class Test
    {
        public static void Area(double Val)
        {
            Console.WriteLine(Val * 2);
        }
        public static void Scare(double Val)
        {
            Console.WriteLine(Val * Val);
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鲁山县| 民和| 钟山县| 丰县| 兴国县| 霍州市| 扶风县| 洞口县| 五峰| 德钦县| 巫溪县| 汾西县| 龙胜| 卫辉市| 无极县| 葵青区| 天全县| 铅山县| 定襄县| 赤壁市| 七台河市| 宁都县| 吉安市| 沂水县| 隆尧县| 玉环县| 金阳县| 玉门市| 长岭县| 临洮县| 北海市| 东源县| 绥江县| 苍溪县| 许昌市| 玛曲县| 剑河县| 德阳市| 山阳县| 临汾市| 湾仔区|