哈希表奇怪问题!!??

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:10:01
创建了一个哈希表 public Hashtable hashtable=new Hashtable();

再创建一个自定义对像 public Reply reply=new Reply();

把对像序列化 byte[] temp=reply.Serialize();

从已序列化的字节数组中获得MD5哈希码 MD5 md5 = new MD5CryptoServiceProvider();
byte[] hashCode=md5.ComputeHash(temp);

以获得的哈希码为键把reply加入哈希表 hashtable.Add(hashCode,reply);

把存放哈希码的字节数组拷给另一个字节数组 byte[] tempCode=new byt[hashCode.Length];
for(int i=0;i<hashCode.Length;i++)
{tempCode[i]=hashCode[i];}

用新的这个字节数组来检索哈希表时出错: MessageBox.Show(hashtable[tempCode].GetType().ToString()); <

一,哈希表(Hashtable)简述

在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.

二,哈希表的简单操作

在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
下面控制台程序将包含以上所有操作:
using System;
using System.Collections; //使用Hashtable时,必须引入这个命名空间
class hashtable
{
public static void Main()
{
Hashtable ht=new Hashtable(); //创建一个Hashtable实例
ht.Add("E","e");//添加key/value键值对
ht.Add("A","a");
ht.Add("C","c");
ht.Add("B","b");
string s=(string)ht["A"];
if(ht.Contains("E"))