gpt4 book ai didi

c# - HashSet<> 中的自定义类

转载 作者:行者123 更新时间:2023-11-30 14:54:53 24 4
gpt4 key购买 nike

我想使用 HashSet<>为了存储大量(50-100)的某个自定义类,我们将其称为“海报”。据我所知,使用 HashSet<> 有一些性能优势。对于超过 List<> 的大量元素.但是为了利用这种性能提升,我是否“需要”定义这两者?

  • public bool Equals(Poster a, Poster b)
  • public int GetHashCode(Poster obj)

更新:对于正在研究如何实现这些的任何人,我就是这样做的:

public bool Equals(PosterImage a, PosterImage b)
{
return (a.ApiId == b.ApiId);
}

public int GetHashCode(PosterImage obj)
{
return ((PosterImage) obj).ApiId.GetHashCode();
}

最佳答案

是的,如果你实现一个 IEqualityComparer<Poster> ,你需要实现这些方法。您需要将相等比较器传递给 HashSet<Poster>构造函数。

另一种选择是在 Poster 中实现相等性/哈希码逻辑类本身;在这种情况下,您必须覆盖这些方法:

public bool Equals(object obj)
public int GetHashCode()

关于c# - HashSet<> 中的自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719854/

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