在数组队列上使用包含时,控制台将返回False。为什么?

boaz4

我创建了一个程序,其中有一个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。

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

塞尔曼·杨(Selman Young)

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用包含使用互斥量的静态变量的共享dll时,为什么控制台应用程序挂起?

来自分类Dev

打印核心位置返回控制台的位置时,为什么会出现无限循环?

来自分类Dev

为什么从控制台读取字符串时scanf中的%n返回0

来自分类Dev

在控制台应用程序中使用async / await时,为什么需要AsyncContext?

来自分类Dev

为什么控制台在使用模块时抛出错误?

来自分类Dev

为什么在Linux中使用串行控制台时无法输入输入?

来自分类Dev

为什么在控制台购买时无法在我的应用程序中使用此功能?

来自分类Dev

为什么控制台应用默认使用代理?

来自分类Dev

为什么运行此代码时控制台在循环之前返回第一个随机数?

来自分类Dev

数组队列Java

来自分类Dev

为什么WAS管理控制台队列配置不接受星号(*)作为队列管理器条目?

来自分类Dev

为什么WAS管理控制台队列配置不接受星号(*)作为队列管理器条目?

来自分类Dev

为什么我将JavaScript登录到控制台时将其四舍五入?

来自分类Dev

为什么控制台返回正确的数据,而不返回浏览器?

来自分类Dev

将构造函数分配给变量。-为什么使用Firefox控制台此代码不起作用

来自分类Dev

将构造函数分配给变量。-使用Firefox控制台,为什么此代码不起作用

来自分类Dev

在 gremlin 控制台上,为什么谓词“eq”在“is”内返回 false 而直接比较返回 true?

来自分类Dev

为什么JSfiddle和Chrome控制台会返回同一函数的不同值?

来自分类Dev

为什么Chrome的JS控制台返回DOM元素而不是jQuery对象?

来自分类Dev

为什么Chrome的JS控制台返回DOM元素而不是jQuery对象?

来自分类Dev

实现循环数组队列

来自分类Dev

使用Node时,数据不从查询返回,但从控制台返回 InfluxDB

来自分类Dev

Java:不可转换类型错误(使用数组队列)

来自分类Dev

当数字的长度大于21时,为什么会向控制台记录5的长度?

来自分类Dev

为什么单击滚动条时控制台会暂停我的代码

来自分类Dev

为什么在提示文字时C#控制台应用程序会停止运行?

来自分类Dev

当数字的长度大于21时,为什么会向控制台记录5的长度?

来自分类Dev

为什么在提示文字时C#控制台应用程序会停止运行?

来自分类Dev

为什么访问数据库时控制台没有输出?

Related 相关文章

  1. 1

    使用包含使用互斥量的静态变量的共享dll时,为什么控制台应用程序挂起?

  2. 2

    打印核心位置返回控制台的位置时,为什么会出现无限循环?

  3. 3

    为什么从控制台读取字符串时scanf中的%n返回0

  4. 4

    在控制台应用程序中使用async / await时,为什么需要AsyncContext?

  5. 5

    为什么控制台在使用模块时抛出错误?

  6. 6

    为什么在Linux中使用串行控制台时无法输入输入?

  7. 7

    为什么在控制台购买时无法在我的应用程序中使用此功能?

  8. 8

    为什么控制台应用默认使用代理?

  9. 9

    为什么运行此代码时控制台在循环之前返回第一个随机数?

  10. 10

    数组队列Java

  11. 11

    为什么WAS管理控制台队列配置不接受星号(*)作为队列管理器条目?

  12. 12

    为什么WAS管理控制台队列配置不接受星号(*)作为队列管理器条目?

  13. 13

    为什么我将JavaScript登录到控制台时将其四舍五入?

  14. 14

    为什么控制台返回正确的数据,而不返回浏览器?

  15. 15

    将构造函数分配给变量。-为什么使用Firefox控制台此代码不起作用

  16. 16

    将构造函数分配给变量。-使用Firefox控制台,为什么此代码不起作用

  17. 17

    在 gremlin 控制台上,为什么谓词“eq”在“is”内返回 false 而直接比较返回 true?

  18. 18

    为什么JSfiddle和Chrome控制台会返回同一函数的不同值?

  19. 19

    为什么Chrome的JS控制台返回DOM元素而不是jQuery对象?

  20. 20

    为什么Chrome的JS控制台返回DOM元素而不是jQuery对象?

  21. 21

    实现循环数组队列

  22. 22

    使用Node时,数据不从查询返回,但从控制台返回 InfluxDB

  23. 23

    Java:不可转换类型错误(使用数组队列)

  24. 24

    当数字的长度大于21时,为什么会向控制台记录5的长度?

  25. 25

    为什么单击滚动条时控制台会暂停我的代码

  26. 26

    为什么在提示文字时C#控制台应用程序会停止运行?

  27. 27

    当数字的长度大于21时,为什么会向控制台记录5的长度?

  28. 28

    为什么在提示文字时C#控制台应用程序会停止运行?

  29. 29

    为什么访问数据库时控制台没有输出?

热门标签

归档