C#中的委托之操作符(基础二)

来源:互联网 发布:社交网络 推荐 综述 编辑:程序博客网 时间:2024/06/06 00:35
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Delegate_OTT_02{    /*     * 讲解:     * 委托运算符操作 + 、+= 、- 、-=     *     */    //声明一个委托    delegate void ImOTT(int x);    class Program    {        static void Main(string[] args)        {            ImOTT dele1 = new ImOTT(OTT.A);            dele1(1);            ImOTT dele2 = new ImOTT(OTT.B);            dele2(2);            //-----操作符+             //Call A ; Then B              ImOTT dele3 = dele1 + dele2;            dele3(3);            //-----操作符-              //Call A  Remove B              //dele4中不存在dele2 ,使用操作符“-”指向的是一个空的调用列表,这里并不算是错误            //从非空的列表里移除一个不存在的委托并不算错            ImOTT dele4 = dele1 - dele2;             dele4(4);            //-----操作符+=             //Call A B; Then A            dele3 += dele1;            dele3(5);            //-----操作符-=             //Call A B ,A; Remove A;            dele3 -= dele1;            dele3(6);            //new 一个OTT            OTT ott = new OTT();            ImOTT dele5 = new ImOTT(ott.C);            //Call A  B ; Then C            dele3 += dele5;            dele3(10);            dele3 += dele1;            dele3(20);            //注意这样:此时dele3 中 Call A B C A Then Remove A;操作符-=dele1移除的是最后一个A            //在这样的调用列表中,当移除那个委托时,实际被移除的是调用列表里最后出现的那个委托            dele3 -= dele1;            dele3(30);            Console.Read();        }           }    class OTT {        // 静态方法A        public static void A(int a)        {            Console.WriteLine("OTT.A:  "+ a);        }        // 静态方法B        public static void B(int b)        {            Console.WriteLine("OTT.B:  "+ b);        }        // 方法C        public void C(int c)        {            Console.WriteLine("OTT.C:  "+ c);        }    }}

0 0