C#标准事件流
时间:2022-07-22
本文章向大家介绍C#标准事件流,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
服装价格变动,触发淘宝发布活动和消费者购买衣服事件流
1 public class EventStandard
2 {
3 public class Clothes {
4
5 /// <summary>
6 /// 服装编码
7 /// </summary>
8 public string Id { get; set; }
9
10 /// <summary>
11 /// 服装名称
12 /// </summary>
13 public string Name { get; set; }
14
15 /// <summary>
16 /// 服装价格
17 /// </summary>
18 private double _price;
19
20 public double Price {
21 get { return this._price; }
22 set {
23 PriceRiseHandler?.Invoke(this, new PriceEventArgs()
24 {
25 OldPrice = this._price,
26 NewPrice = value
27 });
28 this._price = value;
29 }
30 }
31
32 /// <summary>
33 /// 服装价格变动事件
34 /// </summary>
35 public event EventHandler PriceRiseHandler;
36
37 }
38
39 /// <summary>
40 /// 衣服价格事件参数 一般会为特定的事件去封装个参数类型
41 /// </summary>
42 public class PriceEventArgs : EventArgs
43 {
44 public double OldPrice { get; set; }
45 public double NewPrice { get; set; }
46 }
47
48 public class TaoBao {
49 /// <summary>
50 /// 淘宝订户
51 /// </summary>
52 public void PublishPriceInfo(object sender, EventArgs e) {
53 Clothes clothes = (Clothes)sender;
54 PriceEventArgs args = (PriceEventArgs)e;
55 if (args.NewPrice < args.OldPrice)
56 Console.WriteLine($"淘宝:发布衣服价格下降的公告,{clothes.Name}服装直降{args.OldPrice - args.NewPrice}元,限时抢购!");
57 else
58 Console.WriteLine("淘宝:价格悄悄上涨或价格未变化,啥也不做");
59 }
60
61 }
62
63 public class Consumer
64 {
65 /// <summary>
66 /// 消费者订户
67 /// </summary>
68 public void Buy(object sender, EventArgs e)
69 {
70 Clothes clothes = (Clothes)sender;
71 PriceEventArgs args = (PriceEventArgs)e;
72 if (args.NewPrice < args.OldPrice)
73 Console.WriteLine($"消费者:之前价格{args.OldPrice},现在价格{args.NewPrice},果断买了!");
74 else
75 Console.WriteLine($"消费者:等等看,降价了再说");
76 }
77 }
78
79 public static void Show()
80 {
81 Clothes clothes = new Clothes()
82 {
83 Id = "12111-XK",
84 Name = "优衣库",
85 Price = 128
86 };
87 //订阅:把订户和发布者的事件关联起来
88 clothes.PriceRiseHandler += new TaoBao().PublishPriceInfo;
89 clothes.PriceRiseHandler += new Consumer().Buy;
90 //价格变化,自动触发订户订阅的事件
91 clothes.Price = 300;
92 }
93
94 }
调用:
clothes.Price = 300;
EventStandard.Show();
clothes.Price = 98;
EventStandard.Show();
- 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
- Polyspace不认识Interrupt,肿么办?
- 1639: [Usaco2007 Mar]Monthly Expense 月度开支
- 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
- 1642: [Usaco2007 Nov]Milking Time 挤奶时间
- 1625: [Usaco2007 Dec]宝石手镯
- 1613: [Usaco2007 Jan]Running贝茜的晨练计划
- 1677: [Usaco2005 Jan]Sumsets 求和
- 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
- 1602: [Usaco2008 Oct]牧场行走
- 【LeetCode 500】关关的刷题日记27 Keyboard Row
- 1601: [Usaco2008 Oct]灌水
- 1657: [Usaco2006 Mar]Mooo 奶牛的歌声
- 1610: [Usaco2008 Feb]Line连线游戏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 优雅的drop掉mysql库中1TB大表
- 《剑指offer》第19天:股票交易(校对)
- SwiftyUserDefaults-封装系统本地化的框架推荐
- “使用多target来构建大量相似App”,唐巧大神理论验证(附工程代码地址)
- 小结:Swift、OC语言中多target在代码中如何区分
- 点击按钮每次都能实现图片的旋转和切换(swift)
- 多线程之NSOperation小结
- 判断一个坐标点是否在封闭曲线内的方法(swift)
- OC循环方法推荐-块循环遍历(比for循环好用)
- oc工程中oc、swift混编代码打包成静态framework踩坑笔记
- alloc 和 init都做了什么验证。
- 回顾冒泡排序(新增优化代码)
- 计算输入的一句英文语句中单词数
- 《剑指offer》第21天:合并两个有序链表
- 单细胞转录组基础分析六:伪时间分析