zoukankan      html  css  js  c++  java
  • 4.事件篇

    namespace ConsoleApplication2
    {
        class Program
        {
            private static void student_registerFinish()
            {
                Console.WriteLine("注册成功");
            }
            static void Main(string[] args)
            {
                string stuName = Console.ReadLine();
                Student stu = new Student(stuName);
                //订阅student类的RegisterFinish
                stu.RegisterFinish += new Student.DelegateRegisterFinishEventHandler(student_registerFinish);
                stu.Register();//事件发生时通知事件订阅者
            }
        }
        class Student
        {
            public delegate void DelegateRegisterFinishEventHandler();//定义委托
            public event DelegateRegisterFinishEventHandler RegisterFinish; //通过委托定义事件
            private string name;
            public Student(string name)
            {
                this.name = name;
            }
            public void Register()
            {
                Console.WriteLine("学生{0}进行注册",name);
                if (RegisterFinish != null)
                {
                    RegisterFinish();//引发事件
                }
            }
        }
    }

    1.事件与委托的关系

    事件是特殊化的委托,委托是事件的基础;

    2.理解

    事件是对象发送的消息,发送信号通知客户发生了操作。这个操作可能是由鼠标单击引起的,也可能是由某些其他的程序逻辑触发的。事件的发送方不需要知道那个对象或者方法接收它引发的事件,发送方只需知道在它和接收方之间存在的中介(Deletgate)

    3.定义事件
    //定义事件之前需要定义委托
    public delegate void DelegateEventHandler();
    //定义一个事件
    private event DelegateEventHandler EventMe;

    4.订阅事件   指是为了添加一个委托,事件引发时该委托将调用一个方法。事件存在时为对象订阅事件。

    EventMe += new DelegateEventHandler(//需要引用的方法); //该引用的方法就是订阅了该事件

    5.引发事件 指要通知订阅某个事件的所有对象,需要引发该事件。引发事件与调用方法相似。

    EventMe();  //引发该事件

    6.特点

    a.一个事件可以订阅多个订阅者。
    b.发行者确定何时引发事件,订阅者确定执行何种操作来响应该事件
    c.没有订阅者事件永远都不会被调用
    d.事件通常用于通知操作

  • 相关阅读:
    Tomcat中有四种部署Web应用的方式
    解析Json和复合类型
    spring学习笔记001
    java环境变量
    如何下载JSTL
    servlet应用及知识点总结
    一文读懂微服务架构
    一个死锁的case
    如何在phpstorm中查看yaf框架源码
    Modify column Vs change column
  • 原文地址:https://www.cnblogs.com/cygnet/p/4166137.html
Copyright © 2011-2022 走看看