gpt4 book ai didi

C# Assert.AreNotEqual 与等于

转载 作者:太空狗 更新时间:2023-10-29 22:29:31 24 4
gpt4 key购买 nike

在尝试向自己验证 C# Equals for IEnumerables 是一个引用等于时,我发现了一些奇怪的事情。在 NUnit 中使用以下设置

var a = (IEnumerable<string>)(new[] { "one", "two" });
var b = (IEnumerable<string>)(new[] { "one", "two" });

这个测试

Assert.IsFalse(a.Equals(b));

通过,而这个测试

Assert.AreNotEqual(a, b);

没有。谁能解释一下为什么?

编辑:感谢您的回答。我刚刚阅读了 NUnit 的文档,它说的是同一件事,即 AreEqual 和 AreNotEqual 与集合测试集合中每个元素的相等性。我想我一直坚持这样的想法,即 AreEqual 和 AreNotEqual 只是使用普通的 Equals。

最佳答案

调用a.Equals(b)返回 false因为 a 和 b 不是相同的对象(尽管它们当然是相同的枚举)。 Equals方法,除非被覆盖,否则会自动通过引用比较对象,这就是本例中发生的情况。

Assert.AreNotEqual 比这更聪明一点。它专为调试目的而设计,与 Equals 不同。方法,因此它实际上比较了两个枚举产生的序列,因为它识别出 IEnumerable<T>作为一种特殊类型。您还应该注意到它还做了其他有趣的事情,例如返回 true。当两个参数在数值上相同但值类型不同时(例如 shortlong )。

希望对您有所帮助。

关于C# Assert.AreNotEqual 与等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com