C#的事件结合委托

事件是一种使对象或类能够提供通知的成员,比如对象O拥有一个事件E,其中想表达的思想就是:当事件E发生的时候,O可以有能力去通知别的对象。

事件用于对象或类间的动作协调与信息传递(消息推送)

  • 事件多用在桌面、手机等开发的客户端编程,因为这些程序经常是用户通过事件来驱动的
  • java语言里没有事件这种成员,也没有委托这种数据类型,java 的“事件”是使用接口来实现的
  • MVC、MVP、MVVM等模式是事件模式更高级、更有效的玩法

事件的五个组成部分:

  1. 事件的拥有者
  2. 事件成员
  3. 事件的响应者
  4. 事件处理器
  5. 事件的订阅--把事件处理器和事件关联在一起
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;


namespace AsyncExample
{
    public class ClassInfoEventArgs : EventArgs
    {
        public string ClassGrade { get; set; }
        public string ClassName { get; set; }
        public ClassInfoEventArgs(string ClassGrade,string ClassName)
        {
            this.ClassGrade = ClassGrade;
            this.ClassName = ClassName;
        }

    }
    public class StudentInfo
    {
        
        public event EventHandler<ClassInfoEventArgs> showStudentInfo;

        public StudentInfo()
        {
            showStudentInfo += new EventHandler<ClassInfoEventArgs>(showStudentInfoMehtod);
        }

        private void showStudentInfoMehtod(object sender, ClassInfoEventArgs e)
        {
            Console.WriteLine("我是" + e.ClassGrade + e.ClassName+"的学生");
        }
        public void callShowStudentInfo(ClassInfoEventArgs classInfoEvent)
        {
            showStudentInfo?.Invoke(this, classInfoEvent);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ClassInfoEventArgs classInfoEvent = new ClassInfoEventArgs("三年级","二班");
            StudentInfo studentInfo = new StudentInfo();
            studentInfo.callShowStudentInfo(classInfoEvent);
        }
       
    }
}

在上述代码中,主要描述的是student信息传递的方式,事件的响应者和拥有者都是StudentInfo本身,外部使用者调用事件callShowStudentInfo,并且传入参数,showStudentInfo事件处理器响应并且处理产生后续响应事件showStudentInfoMethod方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值