数组的结构比较
StructuralComparisons for arrays
在 F# 中:
[0] = [0] = true
一般在 C# 或 .NET BCL 中:
StructuralComparisons.Equals(new int[] { 0 }, new int[] { 0 }) == false
为什么?
后记:
我认为我有 "right" 等于的原因是因为事实证明这是真的:
var a = new { X = 3, Y = new { Z = -1 } };
var b = new { X = 3, Y = new { Z = -1 } };
StructuralComparisons.Equals(a, b) == true;
那是因为您将下降到 object.Equals(objA, objB)
,它将无法处理这种比较。
改为这样做:
StructuralComparisons.StructuralEqualityComparer.Equals(..., ...)
在 F# 中:
[0] = [0] = true
一般在 C# 或 .NET BCL 中:
StructuralComparisons.Equals(new int[] { 0 }, new int[] { 0 }) == false
为什么?
后记:
我认为我有 "right" 等于的原因是因为事实证明这是真的:
var a = new { X = 3, Y = new { Z = -1 } };
var b = new { X = 3, Y = new { Z = -1 } };
StructuralComparisons.Equals(a, b) == true;
那是因为您将下降到 object.Equals(objA, objB)
,它将无法处理这种比较。
改为这样做:
StructuralComparisons.StructuralEqualityComparer.Equals(..., ...)