gpt4 book ai didi

c# - 比较 Array[][] 与 SequenceEqual() 和自定义方法的不同结果

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:56 25 4
gpt4 key购买 nike

有人能解释一下为什么我会得到不同的结果吗?

bool result = true;
for (int row = 0; row < State.Rows; row++)
{
for (int col = 0; col < State.Cols; col++)
{
if (map[row][col] != other.map[row][col])
//if (!map[row][col].Equals(other.map[row][col]))
result = false;
}
}
bool sequenceEqual = map.SequenceEqual(other.map);

//result = true
//sequenceEqual = false

I overwrote Equals(), GetHashCode(), == and != for the type to be compared .我还尝试了 this 中的 CollectionComparer回答,得到相同的结果。

最佳答案

它们不等价。

SequenceEqual 对序列的每个元素使用 Equals。由于 map 是一个二维数组,每个“元素”实际上是一行,这意味着它是 ArrayEquals 方法结束的被召唤。

您的方法直接使用 != 比较每个元素,这就是您想要的。

一种解决方案是为 SequenceEquals 提供自定义相等性比较器。然后,所述比较器将再次调用 SequenceEquals。

关于c# - 比较 Array[][] 与 SequenceEqual() 和自定义方法的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934937/

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