当前位置: 首页 > news >正文

C# 核心--事件型接口

在 C# 中,​​事件(Event)​​ 是一种特殊的成员,它基于 ​​委托(Delegate)​​ 提供了一种 ​​安全的发布-订阅(Publisher-Subscriber)机制​​,常用于对象间通信,尤其是在 GUI(如 WPF / WinForms)、异步编程和事件驱动设计中。

当事件与 ​​接口(Interface)​​ 结合使用时,我们称之为 ​​“事件接口” 或 “在接口中定义事件”​​,它表示:​​某个接口要求实现类必须提供特定的事件成员​​。

一、🔷 什么是“C# 事件接口的实现语法”?

  1. ​定义一个接口,其中包含一个或多个事件成员(语法)​

  2. ​实现该接口的类中,如何正确地提供(实现)这些事件(语法)​

二、🔷 1. 在接口中定义事件(语法)

✅ 语法格式:

public interface IMyInterface
{event EventHandler MyEvent;  // 定义一个事件成员
}
  • event是关键字,表示该成员是一个事件;

  • EventHandler是 .NET 提供的标准委托类型,表示事件处理方法的签名是:

    void Handler(object sender, EventArgs e)

  • 你也可以定义 ​​自定义委托类型的事件​​,或使用 ​​泛型 EventHandler<TEventArgs>

✅ 示例:定义一个带事件的接口

using System;// 定义一个接口,其中包含一个事件
public interface INotifyStatusChanged
{event EventHandler StatusChanged; //事件:状态改变时触发,接口的成员隐式Public,不能有任何修饰符
}

这个接口的意思是:​​任何实现了 INotifyStatusChanged的类,都必须提供一个名为 StatusChanged的事件,类型为 EventHandler

三、🔷 2. 实现接口中的事件(语法)

当一个类 ​​实现了包含事件的接口​​ 时,它 ​​必须为该接口中的每个事件成员提供具体的实现​​,否则会引发 ​​编译错误​​。

✅ 示例:实现上述接口

public class MyService : INotifyStatusChanged
{// ✅ 必须实现接口中的事件public event EventHandler StatusChanged; //这里是接口事件实现public void DoSomething(){Console.WriteLine("执行某些操作...");// 触发事件StatusChanged?.Invoke(this, EventArgs.Empty);}
}

✅ 使用示例:

var service = new MyService();// 订阅事件
service.StatusChanged += (sender, e) => 
{Console.WriteLine("状态改变了!我收到了通知。");
};// 调用方法,触发事件
service.DoSomething();

四、🔷 3. 事件在接口中的实现要点总结

项目

说明

​事件定义在接口中​

使用 event EventHandler MyEvent;或 event EventHandler<T> MyEvent;语法

​实现类必须实现接口事件​

类中必须提供 public event EventHandler MyEvent;,否则编译报错

​事件触发​

在类的方法中,通过 MyEvent?.Invoke(this, EventArgs.Empty);触发事件

​事件订阅​

外部代码通过 obj.MyEvent += Handler;来订阅事件

​推荐使用泛型事件​

使用 EventHandler<TEventArgs>比 EventHandler更类型安全、灵活

​接口只定义契约​

接口不提供事件的具体逻辑,只要求实现类必须提供该事件成员

http://www.dtcms.com/a/484301.html

相关文章:

  • 如保做网站赢利二手书交易网站策划书
  • 电商网站建设机构番禺网站建设多少钱
  • 网站建设seo优化方案网上买购物的软件有哪些
  • 网站里的地图定位怎么做交互设计名词解释
  • 河北网站制作报价手机百度问一问
  • 网站正在建设中 代码网络广告案例以及分析
  • 商务网站建设期末作业如何做资源论坛网站
  • 百度云盘网站开发恶意点击竞价时用的什么软件
  • 【YOLO模型】(4)--YOLO V3:目标检测的进化飞跃
  • 南京秦淮区建设局网站青岛百度推广优化怎么做的
  • 北京微信网站开发报价偷网站源码直接建站
  • 网站联盟平台江苏建设部网站
  • vue中构建脚手架
  • 房地产公司网站建设方案设计网站如何推广
  • xampp配置多网站推广平台收费标准
  • 网站的设计技术策划软件开发流程和规范
  • 做网站需要的导航数字营销 h5 网站开发
  • 网站icp备案新规wordpress上传七牛
  • 网站建设教程自学视频网站是用什么框架做的
  • 做企业网站进行推广要多少钱那些空号检测网站是怎么做的
  • 【cron】ubuntu 16 下cron不生效
  • 唐山网站推广做网站资源
  • 搜索网址网站建站品牌设计logo
  • 什么好的网站学做食品深圳企业网站建设公司
  • 做网站绿标廊坊网站建设电话
  • 库文件详解
  • 潍坊网站建设官网顺德移动端网站建设
  • 生成式人工智能赋能普通高中理科教学的创新路径研究
  • 做网站数据需要的软件上海企业云服务平台
  • app和手机网站的区别是什么青岛网站seo分析