C# 对于相同的嵌套数组,索引1处的值不同
为什么不平等?收藏家也是如此C# 对于相同的嵌套数组,索引1处的值不同,c#,unit-testing,nunit,C#,Unit Testing,Nunit,为什么不平等?收藏家也是如此 var a = new[] { new[] { 1, 2 }, new[] { 3, 4 } }; var b = new[] { new[] { 1, 2 }, new[] { 3, 4 } }; // if you comment these two lines the test passes a[0] = a[1]; b[0] = b[1]; Assert.That
var a = new[] { new[] { 1, 2 }, new[] { 3, 4 } };
var b = new[] { new[] { 1, 2 }, new[] { 3, 4 } };
// if you comment these two lines the test passes
a[0] = a[1];
b[0] = b[1];
Assert.That(a, Is.EqualTo(b));
给出:
Expected and actual are both <System.Int32[2][]>
Values differ at index [1]
Expected and actual are both <System.Int32[2]>
预期和实际都是
数值在索引[1]处不同
预期的和实际的都是
我正在使用NUnit2.6.4.14350,并在VS.NET4.5项目中从ReSharper测试运行程序运行
独立NUnit测试运行程序(2.6.4)也可以复制相同的结果。尽管
a
和b
属于Int32[2][
类型,但这并不意味着它们相等,因为等于如果数组的引用不相同,则返回true。您需要使用a.SequenceEquals(b)
检查它们的内容是否相同 尽管a
和b
属于Int32[2][]
类型,但这并不意味着它们相等,因为Equals
如果数组的引用与它们不同,则返回true。您需要使用a.SequenceEquals(b)
检查它们的内容是否相同 我报告了此错误,但它已关闭,无法修复:
因此,您可以使用NUnit 3.x,也可以接受它在NUnit 2.6.x中刚刚损坏。我报告了此错误,但它已关闭,无法修复:
因此,您可以使用NUnit 3.x,也可以接受它在NUnit 2.6.x中刚刚被破坏。当我运行此程序时,它是绿色的。@Stephan添加了envdetails@HimBromBeere有两个元素{1,2}和{3,4}@HimBromBeere再看一次;-)制作一个简单的控制台应用程序时,a.Equals(b)
总是false
(需要,请参阅@HimBromBeere-answer)。当我运行这个时,它是绿色的。@Stephan添加了envdetails@HimBromBeere有两个元素{1,2}和{3,4}@HimBromBeere再看一次;-)做一个简单的控制台应用程序,a.Equals(b)
总是false
(预期,请参见@HimBromBeere-answer)。但为什么我注释这两行时它会通过?但为什么我注释这两行时它会通过?