gpt4 book ai didi

c# - 与我类(class)的名单不同

转载 作者:行者123 更新时间:2023-11-30 13:57:01 26 4
gpt4 key购买 nike

我有一个类:

private class Part
{
public string Id { get; set; }
public string Class { get; set; }

public override bool Equals(object obj)
{
Part part = obj as Part;

return this.Id == part.Id;
}
}

我还有一个这个类的列表,所以我需要在这个列表上使用 distinct。这就是我所做的:

List<Part> parts = new List<Part>();
//adding items
parts = parts.Distinct().ToList();

但是没有任何反应。谁能告诉我怎么了?

最佳答案

当覆盖 Equals 时,您还必须覆盖 GetHashCode:

private class Part
{
public string Id { get; set; }
public string Class { get; set; }

// Whenever overiding Equals
// You have to override this method too
public override int GetHashCode() {
return String.IsNullOrEmpty(Id) ? 0 : Id.GetHashCode();
}

public override bool Equals(object obj)
{
Part part = obj as Part;

// if obj is not of Part you should return false
if (Object.ReferenceEquals(null, part))
return false;

return this.Id == part.Id;
}
}

不当行为的原因Distinct first tests GetHashCode并且只有这样 Equals

关于c# - 与我类(class)的名单不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23486761/

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