You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

可空类事件(取消)订阅是否支持简化语法的技术问询

事件订阅/取消订阅的简化写法可行性

当然可以!从C# 6版本开始,就支持用空条件运算符?.来简化事件的订阅和取消订阅操作,完全能替代你原来的if判断写法,让代码更简洁。

简化写法示例

  • 订阅事件:
    eventGeneratingClass?.myEvent += myHandler;
    
  • 取消订阅事件:
    eventGeneratingClass?.myEvent -= myHandler;
    

原理说明

空条件运算符?.在这里的作用是短路判断:如果eventGeneratingClass为null,那么?.后面的事件访问和订阅/取消操作会直接被跳过,不会执行,完全等价于你原来写的if (eventGeneratingClass != null)判断逻辑,同时避免了NullReferenceException的风险。

和原写法的对比

原来的冗余写法:

if (eventGeneratingClass != null) 
{
    eventGeneratingClass.myEvent += myHandler;
}

简化后的写法不仅代码量更少,可读性也更强,和你用myEvent?.Invoke(this, new EventArgs())触发事件的简化思路完全一致。

需要注意的是,这个特性要求你的项目使用C# 6及以上版本,如果是更早的版本,就只能用传统的if判断写法啦。

内容的提问来源于stack exchange,提问作者Lanting

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:21:49