什么检查CollectionAssert.AreEquivalent

Raf*_*a_G 1 c# assertions

我正在阅读MSDN文章中的方法CollectionAssert.AreEquivalent,并根据MSDN:

如果两个集合具有相同数量的相同元素,则它们是等效的,但是以任何顺序排列.如果元素的值相等,则元素相等,而不是它们引用相同的对象.

我在Visual Studio中尝试了以下代码:

var first = new TradeData { ID = "A", MarketPrice = 0 };
var mockFir = new TradeData { ID = "A", MarketPrice = 0 };
var collection = new List<TradeData> { first };
var mockCollection = new List<TradeData> { mockFir };
CollectionAssert.AreEquivalent(collection, mockCollection);
Run Code Online (Sandbox Code Playgroud)

但我有一个例外:

CollectionAssert.AreEquivalent失败

所以,我的问题是:当他们说"如果他们的价值相等时,元素是相等的,而不是他们引用同一个对象"时MSDN究竟是什么意思?

Phi*_*ipp 5

因为TradeData类没有覆盖object.Equals,所以基本实现接管,它通过引用比较两个对象.虽然first并且mockFir包含相同的值,但它们不是同一个对象,因此它们不被认为是相同的.如果你EqualsTradeData类中重写,那么你的例子就可以了.