.Contains(new int[] { .. })"检查列表中的数组,总是返回 false-6ren"> .Contains(new int[] { .. })"检查列表中的数组,总是返回 false-我正在尝试检查由 int[2] 数组组成的列表是否包含特定元素。 简而言之,为什么会产生错误?我该如何正确检查? List ngonPairs = new List {new int[2] { 0,-6ren">
gpt4 book ai didi

c# - 使用 "List.Contains(new int[] { .. })"检查列表中的数组,总是返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:49 24 4
gpt4 key购买 nike

我正在尝试检查由 int[2] 数组组成的列表是否包含特定元素。

简而言之,为什么会产生错误?我该如何正确检查?

List < int[] > ngonPairs = new List<int[]> {new int[2] { 0, 1 }};

bool flag = ngonPairs.Contains(new int[2] { 0, 1 });

标志总是假的。

最佳答案

这是因为

new[]{1, 2} != new[]{1, 2}

它们是不同的数组,对一个的更改不会反射(reflect)到另一个。

但是使用 LINQ 的 SequenceEqual,您可以比较两个序列的内容:

new[]{1, 2}.SequenceEqual(new[]{1, 2}) // == true

现在,使用 LINQ 的 Any 您可以:

bool flag = ngonPairs.Any(p => p.SequenceEqual(new int[] {0, 1}));

.Any 对序列进行操作,如果序列中的任何项目满足谓词,则返回 true

在这种情况下,谓词比较 ngonPairs 中的单个项目(即数组),然后我们可以使用上面描述的 SequenceEqual 将这些数组中的每一个与我们的进行比较已知数组。

关于c# - 使用 "List<int[]>.Contains(new int[] { .. })"检查列表中的数组,总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44789252/

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