我在C#10有以下课程:
public sealed record Country : IEquatable<Country>
{
public string Language { get; set; } = "xx";
public bool Equals(Country? other)
{
if (other is null)
{
return false;
}
return Language == other.Language;
}
public override int GetHashCode() => Language.GetHashCode();
}
编译时会出现以下编译时错误:
接口成员的bool系统.IEquatable<;国家>;.平等(国家?)'没有实施
这是...对于所讨论的类型,有一条非常奇怪的错误消息.我try 改变Country
参数的可空性,并try 生成"missing"方法,该方法将为我的IDE生成以下方法:
public bool Equals(Country? other) => throw new NotImplementedException();
然后,当然,错误切换到
已声明具有相同签名的成员
直接生成Equals()
方法只会覆盖现有方法.
这是怎么回事?并不是所有的同事都对这个类有相同的错误消息,所以它可能与这个类无关.(例如,我想我是Windows上唯一的一个.)dotnet build
可以工作,所以这可能只是Rider 2021.3.2的一个问题,但这也是我的同事使用的IDE.