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

如何使用空原谅运算符抑制C#中的CS8670警告?

解决CS8670警告:用空原谅运算符抑制集合初始化器的可空性警告

你遇到的CS8670警告,是因为集合初始化器Items = { ... }会隐式解引用被标记为可空的Items成员——即便它有默认初始化值。由于无法修改外部程序集中的类A,确实可以用空原谅运算符!来抑制这个警告,只需要把运算符放在目标成员名后面即可。

修改后的代码如下:

class Program {
  public void M() {
    var x = new A
    {
      // 添加!运算符抑制CS8670警告
      Items! = { "Hello", "World" }
    };
  }
}

class A {
  public List<string>? Items { get; init;} = new List<string>();
}

这里的!是在告诉编译器:你明确确认Items此时不为空,无需触发可空性检查。结合类A中Items的默认初始化逻辑,这种写法不会导致空引用异常,是安全的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:04:54