代码之家  ›  专栏  ›  技术社区  ›  Jeff LaFay

没有一个均等比较器,我班上比较了什么?

  •  0
  • Jeff LaFay  · 技术社区  · 14 年前

    我想在排队之前检查一个对象是否在队列中。如果不显式定义EqualityComparer,那么contains()函数比较什么?

    如果它比较属性值,那是完美的。如果它比较查看队列中是否存在对该对象的引用,那么这会破坏我在代码中试图完成的工作。

    2 回复  |  直到 14 年前
        1
  •  7
  •   Jon Skeet    14 年前

    对于类,默认的相等操作是通过引用进行的——它假定对象标识和相等基本上是相同的。

    你可以通过压倒 Equals GetHashCode . 我也建议实施 IEquatable<T> 为了澄清这一点。哈希代码实现应使用与相等操作相同的值生成哈希代码。

        2
  •  0
  •   Lucero    14 年前

    引用类型的默认值是比较引用。

    但是,如果类型实现 IEquatable<> 它可以做一个不同的比较。如果需要进行特定的平等比较,则需要自己创建一个。