dotnet-event事件-使用笔记

本文探讨了如何在C#中使用事件(event)进行模块间通信,通过PublisherClass和SubscriberClass两个类的实例,展示了如何声明、触发和处理事件。使用了EventHandler事件代理和EventArgs类传递信息,详细解释了事件在.NET框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件event用于不同模块之间的通讯,本实例中,定义2个class,一个PublisherClass类申明了2个事件,2个方法,调用方法将会触发事件,通过股票代码code或者板块block查询股票信息。另一个SubscriberClass类,定义了一个List<Stock>成员用来保存股票Stock对象,2个方法注册给PublisherClass类对象的事件。

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

namespace EventDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Stock> stocks = new List<Stock>()
            {
                new Stock("002211", "长城科技", 11.1, "消费电子"),
                new Stock("300121", "桔子电子", 22.2, "消费电子"),
                new Stock("600006", "远东能源", 33.3, "能源板块"),
                new Stock("600101", "望城食品", 44.4, "食品板块")
            };

            // 实例化2个对象
            PublisherClass publisher = new PublisherClass();
            SubscriberClass subscriber = new SubscriberClass(stocks); 
            
            // 事件注册
            // 整个流程来看,要使用事件需申明委托、申明事件、注册事件、触发事件4个步骤
            publisher.GetInfoFromCodeEvent += subscriber.ReplyToInputCode;
            publisher.GetInfoFromBlockEvent += subscriber.ReplyToInputBlock;
            // 触发事件,输入代码查询股票信息
            publisher.GetInfoFromCode("300121");
            // 触发事件,输入板块查询股票信息
            publisher.GetInfoFromBlock("消费电子");

            Console.ReadLine();
        }
    }   

    // 委托申明
    public delegate void GetInfoFromCodeEventHandler(string code);
    public delegate void GetInfoFromBlockEventHandler(string block);

    // 事件发布者
    public class PublisherClass
    {
        // 事件申明,事件类型是委托类型
        public event GetInfoFromCodeEventHandler GetInfoFromCodeEvent;
        public event GetInfoFromBlockEventHandler GetInfoFromBlockEvent;

        public void GetInfoFromCode(string code)
        {
            GetInfoFromCodeEvent?.Invoke(code);
        }

        public void Ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值