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

Ash*_*Ash 2 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));
Run Code Online (Sandbox Code Playgroud)

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

Ano*_*on. 7

作为基本类型的数组不应该使用对象引用,是吗?

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

一切都按照预期的方式运作.

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