gpt4 book ai didi

c# - 在数组队列上使用 Contains 时,控制台返回 False。为什么?

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

我创建了一个程序,其中有一个 int 数组队列:

Queue< int[] > Test = new Queue< int[] >();

给定一个数组,我想检查该数组是否在队列中。

我目前使用的命名空间是:System、System.Collections 和 System.Collections.Generic。

我试过这样的:

Queue<int[]> Test = new Queue<int[]>();

Test.Enqueue(new int[] { 20, 20 });

Console.WriteLine( Test.Contains(new int[] { 20, 20 }) ); // Is the array {20,20} inside the queue?

在这段代码中,在我看来,控制台将输出“true”,因为我将数组 {20, 20} 添加到队列中,现在我正在使用 Contains 方法进行检查。

但是当我运行代码时——控制台输出 false。

我有两个问题:为什么会这样?我该如何解决这个问题?

最佳答案

因为数组是引用类型,所以比较将基于引用。即使内容相同,您的数组也有不同的引用。这就是您得到 false 的原因。

要解决这个问题,您可以实现自定义比较器,或者您可以使用 LINQ 方法,例如

bool arrayExists = Test.Any(x => x.SequenceEqual(new[] { 20, 20 }));

关于c# - 在数组队列上使用 Contains 时,控制台返回 False。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205054/

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