C# Event事件的用法。

请参考这个地址,本人写的下面参考不大,当时看的B站视频,截图只是方便我自己回忆,请看如下地址
委托和事件这篇文章写的挺好,跟着写一遍就可以懂。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
针对于Broadcaster类型里面的代码,PriceChanged就相当于是委托。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例子:

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

namespace 事件event
{
    public delegate void PriceChangedHandler(decimal oldPrice,decimal newPrice);

    //用来传递消息
    public class PriceChangedEbentArgs : EventArgs
    {
        public readonly decimal LastPrice;
        public readonly decimal NewPrice;

        public PriceChangedEbentArgs(decimal lastPrice, decimal newPrice)
        {
            LastPrice = lastPrice;
            NewPrice = newPrice;
        }
    }


    public class Stock
    {
        string symbol;
        decimal price;
        public Stock(string symbol)
        {
            this.symbol = symbol;
        }

        public event EventHandler<PriceChangedEbentArgs> PriceChanged;

        protected virtual void OnPriceChanged(PriceChangedEbentArgs e)
        {
            PriceChanged?.Invoke(this,e);
        }

        public decimal Price
        {
            get { return price; }
            set
            {
                if (price == value) return;
                decimal oldPric = price;
                price = value;
                OnPriceChanged(new PriceChangedEbentArgs(oldPric,price));
            }
        }

    }

    class Program
    {
        public event PriceChangedHandler PriceChanged;

        static void Main(string[] args)
        {

            Stock stock = new Stock("MSFT");
            stock.Price = 120;
            stock.PriceChanged += stock_PriceChanged;
            stock.Price = 135;

            Console.ReadKey();

        }

        static void stock_PriceChanged(object sendr,PriceChangedEbentArgs e)
        {
            if ((e.NewPrice - e.LastPrice) / e.LastPrice > 0.1M) {
                Console.WriteLine("Alert,10% stock price increase!");
            }
            
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值