Ben*_*sen 5 c# f# base-class-library structural-equality
在F#中:
[0] = [0] = true
Run Code Online (Sandbox Code Playgroud)
在C#或.NET BCL中一般:
StructuralComparisons.Equals(new int[] { 0 }, new int[] { 0 }) == false
Run Code Online (Sandbox Code Playgroud)
为什么?
后记:
我认为我有"正确"等于的原因是因为事实证明这是真的:
var a = new { X = 3, Y = new { Z = -1 } };
var b = new { X = 3, Y = new { Z = -1 } };
StructuralComparisons.Equals(a, b) == true;
Run Code Online (Sandbox Code Playgroud)
那是因为你要去做object.Equals(objA, objB)那种无法处理这种比较的东西.
而是这样做:
StructuralComparisons.StructuralEqualityComparer.Equals(..., ...)
Run Code Online (Sandbox Code Playgroud)