gpt4 book ai didi

c# - BCL 不可变集合 : equality is non-symmetric

转载 作者:行者123 更新时间:2023-11-30 12:11:46 25 4
gpt4 key购买 nike

由于不可变数据结构是一流的值,我们可以像比较任何其他值一样比较它们的相等性或顺序。但是在 BCL 不可变集合预览中事情变得复杂,因为每个不可变集合都可以通过 IEqualityComparer<T> 进行参数化。/IComparer<T>实例。看起来不应该允许具有不同比较器的不可变集合进行比较(因为没有为比较器本身定义相等性),因为它使相等关系不对称:

var xs = ImmutableList<string>.Empty.Add("AAA")
.WithComparer(StringComparer.OrdinalIgnoreCase);

var ys = ImmutableList<string>.Empty.Add("aaa")
.WithComparer(StringComparer.Ordinal);

Console.WriteLine(xs.Equals(ys)); // true
Console.WriteLine(ys.Equals(xs)); // false

这种行为会以某种方式得到修复吗?

最佳答案

平等是一个很难定义的东西,在一个聪明的工程师的房间里就这个定义达成共识就更难了。 :)实际上,我们将从不可变集合的 EqualsGetHashCode 方法中移除值相等性,以便这些方法提供相同的速度(并且几乎无用)与 BCL 和客户代码中的大多数其他类型一样。

我们非常希望在未来的版本中为不可变集合添加值相等方法。

关于c# - BCL 不可变集合 : equality is non-symmetric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14754194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com