gpt4 book ai didi

c# - 等于未实现

转载 作者:行者123 更新时间:2023-12-02 18:14:41 26 4
gpt4 key购买 nike

我在 C# 10 中有以下类(class):

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();
}

编译时会带来如下编译时错误:

Interface member 'bool System.IEquatable<Country?>.Equals(Country?)' is not implemented

对于相关类型来说,这是一条非常奇怪的错误消息。我尝试改变 Country 参数的可为空性,并尝试生成“缺失”方法,这将为我的 IDE 生成以下方法:

public bool Equals(Country? other) => throw new NotImplementedException();

然后,当然,错误会切换为

Member with the same signature is already declared

直接生成Equals()方法只会覆盖现有方法。

这是怎么回事?并非我所有的同事都对这个类有相同的错误消息,所以它可能只是与该类无关的东西。 (例如,我认为我是唯一使用 Windows 的人。)dotnet build 可以工作,因此这可能只是 Rider 2021.3.2 的问题,但这也是我同事使用的 IDE。

最佳答案

和你的记录使用情况有关,记录已经实现了这个接口(interface),不需要IEquatable

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/records#equality-members

在 Visual Studio 中进行快速测试及其可能的 IDE 问题。

关于c# - 等于未实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71764129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com