如何使用空原谅运算符抑制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
相关产品推荐
相关产品推荐

