gpt4 book ai didi

.net 3.5 List 相等和 GetHashCode

转载 作者:行者123 更新时间:2023-12-04 22:38:09 24 4
gpt4 key购买 nike

我在具有列表 <T> 的自定义类中实现 IEquatable作为一个属性,像这样:

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<string> Dislikes;

public bool Equals(Person p)
{
if (p == null)
{
return false;
}
if (object.ReferenceEquals(this, p))
{
return true;
}

return this.FirstName == p.FirstName
&& this.LastName == p.LastName
&& this.Dislikes == p.Dislikes; //or this.Dislikes.Equals(p.Dislikes)
}

public override int GetHashCode()
{
int hash = 17;
hash = hash * 23 + (this.FirstName ?? String.Empty).GetHashCode();
hash = hash * 23 + (this.LastName ?? String.Empty).GetHashCode();
hash = hash * 23 + this.Dislikes.GetHashCode();
return hash;
}
}

我在尝试实现 Equals 和 GetHashCode 方法时担心 List。具体来说,将列表 <T> .equals 评估它的内容是否相等?同样对于列表 <T> .GetHashCode?

最佳答案

不, .Equals 只会进行引用比较,而 GetHashCode 将返回每个对象分配的标准代码。

如果您想根据列表的内容执行 .Equals ,您必须自己枚举它,就像生成哈希码一样明智。

关于.net 3.5 List<T> 相等和 GetHashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068226/

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