【发布时间】:2015-11-12 18:04:59
【问题描述】:
在 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;
【问题讨论】:
-
new int[] { 0 }.SequenceEqual(new int[] { 0 }) == true; -
是的,但我希望对象图之间具有一般的结构相等性——但只是数组,如此处所示。我选择数组的原因是它们不相等。
-
这是 Don Syme 关于 F# 中的平等和比较的博文:blogs.msdn.com/b/dsyme/archive/2009/11/08/…
-
@Petr,谢谢,但我对 F# 有/没有问题 ;-) ...但我只是误读了 API。我想像 StructuralComparisons.StructuralEquals 这样的方法可以让我免于尴尬。 :-)
-
顺便说一句,
[0]在 F# 中不是数组。
标签: c# f# base-class-library structural-equality