5

F# の場合:

[0] = [0] = true

一般に、C# または .NET BCL の場合:

StructuralComparisons.Equals(new int[] { 0 }, new int[] { 0 }) == false

なんで?


追記:

私が「正しい」Equalsを持っていると思った理由は、これが真実であることが判明したからです:

var a = new { X = 3, Y = new { Z = -1 } };
var b = new { X = 3, Y = new { Z = -1 } };

StructuralComparisons.Equals(a, b) == true;
4

1 に答える 1

8

それはobject.Equals(objA, objB)、そのような比較を処理できないようになるためです。

代わりにこれを行います:

StructuralComparisons.StructuralEqualityComparer.Equals(..., ...)
于 2015-08-19T12:29:57.167 に答える