C#程序设计 第3章C#面向对象编程
C# 程序设计 第3章 C#面向对象编程
委托和事件 NET事件处理机制 让事件只允许一个订阅者 保留多个返回值
2 委托和事件 让事件只允许一个订阅者 保留多个返回值 .NET事件处理机制
课堂讨论 教师和学生都可以从书店购买感兴趣的图书。书 店新到图书时,如何实现教师和学生能够得到最 新的消息? 3
3 课堂讨论 ▪ 教师和学生都可以从书店购买感兴趣的图书。书 店新到图书时,如何实现教师和学生能够得到最 新的消息?
public delegate void BookDelegate(string address); class BookStore { public string store_address public BookDelegate bd; public BookStore(string address) { this.store address address; public void OnNewBook(string book_type,string book_name) bd(this.store_address )
4 多播委托
多播委托 class Teacher { public string name; public Teacher(string name) this.namename; 3 public void TRegister(string address) { Console.VriteLine("{O准备去瞧瞧",this.name)月 5
5 多播委托
多播委托 class Student public string name; public Student(string name) { this.name name; public void SRegister(string address) { Console.WriteLine('{}改天去书店看看。",this.name); 6
6 多播委托
多播委托 如何不修改 class Program 订阅者的信 息? static void Main(string]args) BookStore bs=new BookStore("新华书店"); Student s=new Student("李同学")月 Teacher t=new Teacher("张老师'); bs.bd new BookDelegate(s.SRegister); bs.bd +=t.TRegister; bs.OnNewBook"工学","C#程序设计"); Console.WriteLine("- Student s1=new Student("王同学); bs.bd s1.SRegister bs.OnNewBook(理学","线性代数") bs.bd=t.TRegister; C:\Windows\system32\c. bs.OnNewBook(); 李同学改天去书店看看 长老师准备去瞧瞧 同学配改 天去书店看看。 请按任意键继续·· 7
7 多播委托 bs.bd=t.TRegister; bs.OnNewBook(); 如何不修改 订阅者的信 息?
事件 什么是事 事件源 件?? “请听题~” ① 引发事件的类(事件的发布者) ② 处理事件的类(事件的接收者) ③ 提供事件数据的类 集中注意力聆听 未订阅该事件 兵心人 抢答者 抢答者 事件的订阅人 8
8 8 事件 抢答者 宣布人 抢答者 “请听题~” 集中注意力聆听 其他人 事件源 事件的发布者 事件的订阅人 未订阅该事件 ① 引发事件的类(事件的发布者) ② 处理事件的类(事件的接收者) ③ 提供事件数据的类 什么是事 件??
事件 什么是事件: ■事件是类在发生被关注的事情时用来提供通知的一种方 式 ■发送(或引发)事件的类称为“发行者”或“事件源” ■接收(或处理)事件的类称为“订户”或“接收者” ■在C#中使用委托模型来实现事件 9
9 事件 ▪ 什么是事件: ◼ 事件是类在发生被关注的事情时用来提供通知的一种方 式 ◼ 发送(或引发)事件的类称为“发行者”或“事件源” ◼ 接收(或处理)事件的类称为“订户”或“接收者” ◼ 在C#中使用委托模型来实现事件
事件机制来实现-事件发布者 class BookStore 事件 public string store_address; public event BookDelegate bd; 定义委托变量 public BookStore(string address) { this.store_address address; } public void OnNewBook(string book_type,string book_name) bd(this.store_address); 10
10 事件机制来实现-事件发布者 事件 定义委托变量