NUnit Is.EqualTo将不同的refenceres视为相等

时间:2017-06-24 09:48:30

标签: c# nunit

我正在复制这样一个数组:

var arrayOfMyTypes = new IMyType[1, 2]; //IMyType is an interface
arrayOfMyTypes[0, 0] = new MyType(); // that MyType implements
arrayOfMyTypes[0, 1] = new MyType();

var xRange = arrayOfMyTypes.GetLength(0);
var yRange = arrayOfMyTypes.GetLength(1);

var copy = new IMyType[xRange, yRange];
for (var xIdx = 0; xIdx < xRange; xIdx++)
{
    for (var yIdx = 0; yIdx < yRange; yIdx++)
    {
        copy[xIdx, yIdx] = arrayOfMyTypes[xIdx, yIdx];
    }
}

Assert.That(copy, Is.EqualTo(arrayOfMyTypes)); // true
Assert.That(copy, Is.Not.EqualTo(arrayOfMyTypes)); // false

要清楚,我希望元素相同,数组不同。那么为什么Nunit认为arrayOfMyTypescopy是相同的?

1 个答案:

答案 0 :(得分:2)

如果您想比较参考而不是值,请使用Is.SameAs

Assert.That(copy, Is.SameAs(arrayOfMyTypes)); // false