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)。但为什么我注释这两行时它会通过?但为什么我注释这两行时它会通过?