Csharp事件详解

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Csharp事件
{
 
    /*
     * 作者:Ai
     * 时间:2018年3月1日22:19:02
     * 
     * 事件(event)可被视作为一种特别的委托,
     * 它为委托对象隐式地建立起add_XXX、remove_XXX 两个方法,
     * 用作注册与注销事件的处理方法。
     * 而且事件对应的变量成员将会被视为 private 变量,
     * 外界无法超越事件所在对象直接访问它们,
     * 这使事件具备良好的封装性,而且免除了add_XXX、remove_XXX等繁琐的代码。
     * 
     */
    class Program
    {
        //0.声明一个委托类型
        delegate void MyDelegateHanDler();
        //1.基于委托类型声明一个事件
        static event MyDelegateHanDler MyEvent;
        static void Main(string[] args)
        {
            //2.为事件绑定方法
            MyEvent += FunA;
            MyEvent += FunB;
            MyEvent();//3.执行事件
            MyEvent -= FunB;//解除绑定

            //3.为事件绑定匿名方法
            MyEvent += delegate ()
            {
                Console.WriteLine("执行匿名方法A");
                for (int i = 0; i < 10; i++)
                {
                    Console.Write(i + "  ");
                }
                Console.WriteLine();
            };

            MyEvent();

            //4.Invoke 方法可以显式执行事件中的方法(每次 MyEvent()相当于  MyEvent.Invoke()         
            MyEvent.Invoke();

           
          
        }

        

        static void FunA()
        {
            Console.WriteLine("执行方法A");
        }
        static void FunB()
        {
            Console.WriteLine("执行方法B");
        }
    }
}

发布了25 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37446649/article/details/80445655
今日推荐