我刚刚使用最新的.NET Core 3.1.2将VS更新到最新的16.6.0 Preview 1.0我的项目有<Nullable>enable</Nullable>
似乎IEquatable<T>
有所更改,现在它已由[AllowNull]
定义:
public interface IEquatable<T>
{
bool Equals([AllowNull] T other);
}
因此,任何使用IEquatable<T>
实施bool Equals(T o)
的地雷类别都显示警告:
警告CS8767'bool MyType.Equals(MyType o)'的参数'o'类型中的引用类型的可空性由于具有可空性属性而与隐式实现的成员'bool IEquatable.Equals(MyType other)'不匹配。
解决此问题的最佳方法是什么?
我可以添加可为空的运算符bool Equals(T? o)
或者我可以添加[AllowNull]
(参考System.Diagnostics.CodeAnalysis),两者似乎都使警告消失了,但是我不确定哪个更好。.]]
而且我现在也为我真正想要的可为空的参数打开了大门。
有帮助吗?
我刚刚使用最新的.NET Core 3.1.2将VS更新到最新的16.6.0 Preview 1.0,我的项目已经[[启用
<PropertyGroup>
<NoWarn>$(NoWarn);CS8610</NoWarn>
</PropertyGroup>