今天,我遇到了一个令人震惊的问题,我试图查找List集合中是否包含对象。问题是列表找不到对象,并且当我已经可以看到索引时就将索引返回-1。然后,我创建了一个自定义的索引查找器,通过比较属性而不是直接相等来查找对象,我发现对象的一个属性,即一个相同的ushort数组,在比较时返回false,但是它们包含的元素完全相同。
数组如下:
{ushort [1]} [0] 13
两者完全相同,除了其中一个对象包含在一个列表中,而另一个对象独立存在。可能是这个问题的原因?我已经尝试了各种类型的方法来解决问题,但是我不能仅仅弄清楚问题是什么。在这种特殊情况下,导致两个数组之间的比较返回false的原因,我使用了Object.equals
以及普通的==
比较器。谢谢
最佳答案
对于数组,仅当您比较两个指向同一数组的引用时,Equals才会返回true。要按内容比较不同的数组,可以使用:
Enumerable.SequenceEqual(a1, a2)
另外,如果collection包含您的自定义类型的对象,请确保这些类型覆盖Equals,equalityoperator(==)和GetHashCode。
关于c# - 包含相同元素的两个数组可以不相等吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16002903/