可能的空引用分配警告对我来说似乎是假的

Possible null reference assignment warning seems bogus to me

下面的代码给了我一个警告,但我不明白为什么。

client.Host = Settings.Host;

warning CS8601: Possible null reference assignment.

此处clientSettings都不为空。 client.HostSettings.Host 都是 string?.

类型

因此,虽然它可能是一个空引用赋值,但它应该无关紧要,因为目标变量允许空值。

注意 Host 属性 声明中的 DisallowNull 属性。

来自documentation

Specifies that null is disallowed as an input even if the corresponding type allows it.

[DisallowNull]
public string? Host

由于它是在 System.Diagnostics.CodeAnalysis 命名空间中声明的,因此 Visual Studios 代码分析器将考虑到这一点。

字符串?已经声明了,intellisense 肯定会在某些情况下将其取为可空值。

您可以使用 AllowNullAttribute class 其中:

Specifies that null is allowed as an input even if the corresponding type disallows it.

例如:

[AllowNullAttribute]
public string Host

这样你就不会收到那些烦人的警告了!