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

.NET 7中PropertyChangedEventHandler引发CS8612与CS8618错误的解决咨询

修复.NET 7中PropertyChangedEventHandler的CS8612和CS8618错误

这两个错误都是因为.NET 7默认启用了nullable引用类型检查,你的代码不符合新的空安全规则导致的,具体修复方案如下:

错误原因说明

  • CS8612:INotifyPropertyChanged接口的PropertyChanged事件在nullable上下文里被定义为可空类型(PropertyChangedEventHandler?),但你原来的声明是非空的PropertyChangedEventHandler,导致隐式实现的成员类型不匹配。
  • CS8618:事件字段默认初始值为null,你声明为非空引用类型后,编译器要求构造函数必须给它赋非空值,否则报错。

修复方案

方案1:将事件声明为可空类型(推荐)

直接匹配接口的可空声明,同时允许事件初始为null(这符合事件的使用逻辑,因为事件可以没有订阅者):

public event PropertyChangedEventHandler? PropertyChanged;

这样两个错误会直接消失,也是最贴合.NET nullable规则的写法。

方案2:初始化空委托(保持非空声明)

如果你希望事件永远不为null(避免触发事件时的null检查),可以给事件初始化一个空委托:

public event PropertyChangedEventHandler PropertyChanged = delegate { };

这样既满足了构造函数退出时非空的要求(解决CS8618),同时非空的事件成员可以兼容接口的可空声明(解决CS8612)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:42:11