C#高级编程:事件侦听与订阅示例解析

需积分: 14 44 下载量 36 浏览量 更新于2024-08-05 收藏 97.07MB PDF 举报
"C#高级编程技术,涉及事件侦听和事件处理的实现。通过一个名为Consumer的类作为事件侦听器,订阅并处理CarDealer类的NewCarInfo事件。Consumer类中的NewCarIsHere方法按照CarInfoEventArgs参数类型处理事件。在代码示例中,展示了如何订阅和取消订阅事件,以及事件发布者CarDealer如何触发事件。" 在C#编程中,事件是对象间通信的重要机制,用于传递信息,通常与观察者模式或发布/订阅模式相关联。在这个例子中,我们关注的是事件侦听和处理。`Consumer` 类扮演了事件订阅者的角色,它定义了一个方法 `NewCarIsHere`,此方法符合 `EventHandler<CarInfoEventArgs>` 委托的签名,因此可以作为事件处理程序。`CarDealer` 类是事件发布者,它公开了一个 `NewCarInfo` 事件,当有新车到店时会触发。 `Consumer` 类的构造函数接收一个字符串 `name` 参数,用于标识消费者。`NewCarIsHere` 方法会打印一条消息,表明某个消费者注意到一辆新的汽车到达,并且提供了汽车的品牌信息。这个方法被附加到 `CarDealer` 的 `NewCarInfo` 事件上,以便在事件触发时执行。 在主程序 `Main` 中,首先创建一个 `CarDealer` 对象和两个 `Consumer` 对象,分别代表 Michael 和 Nick。然后,Michael 和 Nick 都订阅了 `CarDealer` 的 `NewCarInfo` 事件。当 `CarDealer` 添加新的汽车(如 Mercedes 和 Ferrari)时,相应的事件处理程序会被调用,通知 Michael 和 Nick 新车的情况。然而,之后 Michael 通过将他的事件处理程序从 `NewCarInfo` 事件中移除,不再接收事件通知,因此当 `CarDealer` 后续添加 Toyota 汽车时,只有 Nick 能够收到通知。 这段代码展示了C#中事件的基本用法,包括事件的声明、事件处理程序的定义、订阅和取消订阅事件。这些概念在构建多层架构的应用程序或实现组件间的交互时非常关键。通过事件机制,可以实现模块之间的解耦,提高代码的灵活性和可维护性。