c# - 为什么对于 C# 中 byte[] 类型的键,哈希表不会为 "ContainsKey"返回 true?

标签 c# hashtable assertions

考虑以下代码:

byte[] bytes = new byte[] { 1, 2, 5, 0, 6 };
byte[] another = new byte[] { 1, 2, 5, 0, 6 };

Hashtable ht = new Hashtable();
ht.Add(bytes, "hi");
Assert.IsTrue(ht.ContainsKey(another));

为什么这个断言会失败?作为原始类型的数组不应该使用对象引用,不是吗?那么为什么它会返回 false 呢?我可以做些什么来使这个哈希表正常工作吗?

最佳答案

Being an array of a primitive type shouldn't use using the object reference, should it?

是的,它应该。数组是引用类型。

一切正常。

如果您想要不同的行为,您可以为数组实现一个比较器来比较内容并将其传递给哈希表。

关于c# - 为什么对于 C# 中 byte[] 类型的键,哈希表不会为 "ContainsKey"返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905038/

相关文章:

java - 禁用时 Java 断言的性能拖累

c# - Excel.Range 到 C# 中的字符串转换

c# - .NET 中的动态 WSDL 位置

C - 带 2 个结构的销毁函数

data-structures - 从哈希表中删除条目的最佳方法

java - 为每个包启用断言

java - 在 Play 中启用断言!发展模式

c# - WebRequest.GetResponse().GetResponseStream() 可以在没有 WebException 的情况下返回 null 吗?

C# SQL : How can I increment an integer value in a database by one on multiple records?

Java-如何从 HashMap 创建 Java Hashtable