1

今天我遇到了一个惊人的问题,我试图找出一个对象是否包含在 List 集合中。问题是列表没有找到对象并返回索引为-1,而我已经可以在那里看到它。然后,我创建了一个自定义索引查找器,通过比较属性而不是直接相等来查找对象.

数组如下:

{ushort[1]} [0]13

并且它们在两者中完全相同,只是其中一个对象包含在 List 中,而另一个对象是自己的。这个问题的原因可能是什么?我已经尝试了各种不同的方法来解决这个问题,但我不能只是弄清楚问题是什么。在这种特殊情况下,导致两个数组之间的比较返回 false 的原因,我使用Object.equals了普通比较器和普通==比较器。谢谢

4

1 回答 1

5

对于数组,只有在比较指向同一数组的两个引用时,Equals 才会返回 true。要按内容比较不同的数组,可以使用:

 Enumerable.SequenceEqual(a1, a2)

此外,如果集合包含您的自定义类型的对象,请确保这些类型覆盖 Equals、相等运算符 (==) 和 GetHashCode。

于 2013-04-14T18:46:50.587 回答