gpt4 book ai didi

c# - SequenceEqual 的 IEqualityComparer

转载 作者:IT王子 更新时间:2023-10-29 04:34:54 27 4
gpt4 key购买 nike

在 C# 中,是否有 IEqualityComparer<IEnumerable>使用 SequenceEqual判断是否相等的方法?

最佳答案

.NET Framework 中没有这样的比较器,但您可以创建一个:

public class IEnumerableComparer<T> : IEqualityComparer<IEnumerable<T>>
{
public bool Equals(IEnumerable<T> x, IEnumerable<T> y)
{
return Object.ReferenceEquals(x, y) || (x != null && y != null && x.SequenceEqual(y));
}

public int GetHashCode(IEnumerable<T> obj)
{
// Will not throw an OverflowException
unchecked
{
return obj.Where(e => e != null).Select(e => e.GetHashCode()).Aggregate(17, (a, b) => 23 * a + b);
}
}
}

在上面的代码中,我遍历了 GetHashCode 中集合的所有项目。我不知道这是否是最明智的解决方案,但这是在内部完成的 HashSetEqualityComparer .

关于c# - SequenceEqual 的 IEqualityComparer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675720/

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