gpt4 book ai didi

c# - System.Collections.Immutable 类型 : why no . 等于

转载 作者:太空狗 更新时间:2023-10-30 01:32:50 25 4
gpt4 key购买 nike

var a = ImmutableList<int>.Empty.Add(1).Add(2).Add(3);
var b = ImmutableList<int>.Empty.Add(1).Add(2).Add(3);

Console.WriteLine(a.Equals(b)); // False

a.Equals(b) 上面的代码中电话 Object.Equals ,因为 ImmutableList<T>不会覆盖 Equals(object) , 以及 ImmutableList<T>是引用类型 Object.Equals做(无用的)引用比较。

问题:为什么不 ImmutableList<T>覆盖 .Equals ?将每个包含的对象与 .Equals 进行比较将是直截了当的。并根据这些比较返回结果。测试框架的其余部分甚至是一致的(参见 class String )

注意:上面的代码是用System.Collections.Immutable.1.1.38-beta-23516测试的

最佳答案

您要做的是测试集合的内容 是否相等。没有 .NET 集合会覆盖 Equals 来执行此操作。相反,使用 SequenceEqual:

Console.WriteLine(a.SequenceEqual(b));

至于为什么 -- 我想这是一个见仁见智的问题。大多数面向引用的平台都尽力避免将引用平等与内容平等混淆。

String 实际上是非常特殊的情况,尽管它确实实现了 IEnumerable,但在 List 的意义上通常不会被视为适当的容器>/等。是。

关于c# - System.Collections.Immutable 类型 : why no . 等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962073/

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