码迷,mamicode.com
首页 > 其他好文 > 详细

4.事件篇

时间:2014-12-16 00:55:38      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   div   log   

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.事件通常用于通知操作

 

4.事件篇

标签:style   blog   io   ar   color   sp   on   div   log   

原文地址:http://www.cnblogs.com/xiaohua-2/p/4166137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!