-
19-09-2019 - |
题
我有一个称为类
MyClass
此类继承IEquatable和器具等于我需要它的方式。 (含义:当我比较两个单独MyClass的在代码tyupe对象,它的工作原理)
我然后创建两个列表:
var ListA = new List<MyClass>();
var ListB = new List<MyClass>();
// Add distinct objects that are equal to one another to
// ListA and ListB in such a way that they are not added in the same order.
当我去比较利斯塔和数组listB,我应该得到真的吗?
ListA.Equals(ListB)==true; //???
解决方案
尝试使用以下
ListA.SequenceEquals(ListB);
SequenceEquals的是在Enumerable
类可用的扩展方法。这是默认可用在C#3.5的项目,因为它带有System.Linq的
其他提示
要回答你的问题,不,你不应该得到正确的。 List
和List<T>
不定义.Equals,所以它们继承的Object.Equals,检查以下内容:
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
和objA.Equals(objB)
是虚拟的。如果我没有记错,默认的实现只检查引用相等(指向内存中的同一个对象),因此您的代码将返回false。
不隶属于 StackOverflow