你问题都没说清楚,,,怎么回答你啊?
专业领域包括网站设计、网站制作、商城网站开发、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联建站的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
猜一下吧,你说的键的引用指的是Dictionary吗?
如果是的话,
首先哈希表和Dictionary都是有键和值组成的元素。
他们的区别就在于效率及灵活性上。
从哈希表和Dictionary的Add方法定义来看
HashTable:
public virtual void Add(
Object key,
Object value
)
Dictionary:
public void Add(
TKey key,
TValue value
)
HashTable,的key和value都是object类型的,这样,
HashTable ht=new HashTable();
ht.Add(1,12);
这样子就存在一个装箱操作(值类型到引用类型的类型转换),同样在取值的时候又涉及到拆箱操作(引用类型到值类型的类型转换).装箱和拆箱操作时很费时的操作。在效率上不高。
而Dicitionary是一个泛型类,key及value的类型是在实例化Dictionary对象时指定的,如:
Dictionaryint,int dict = new Dictionary();
dict.Add(1,12);
同样的操作,但是这里的key和value是在实例化的时候指定的int类型。所以这里不存在装箱和拆箱操作。
以上是Dictionary的优点。
下面是HashTable的优点,Dictionary的缺点。
如果我们所有元素的key和value是相同的类型,使用Dictionary是最好的选择,
但是如过有元素的key和value类型不同的情况下,我们就要使用HashTable了,原因就是HashTable的key和value都是object类型的,而object类型是所有类型的基类。
一下是例子。
HashTable:
HashTable ht = new HashTable();
ht.Add(1,12);
ht.Add("1","12");
ht.Add(2,"12");
ht.Add("2",12);
Dictionary实现上面的情况就需要:
Dictionaryint,int dict = new Dictionary();
dict.Add(1,12);
Dictionarystring,string dict1 = new Dictionary();
dict1.Add("1","12");
Dictionaryint,string dict2 = new Dictionary();
dict2.Add(2,"12")
Dictionarystring,int dict3 = new Dictionary();
dict3.Add("2",12);
以上就是他们的区别了以及各自的优缺点。。。
我们知道Hashtable 是线程安全的,可由多个读取器线程或一个写入线程使用。
它的特点是:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.
我们知道在使用内存中的地址时是按照哪里有空闲的就使用哪里的。怎么可能一直由着我们输入的顺序给你开放地址呢?
Public Function md5(ByVal a As String) As String
Dim tempmd5 As System.Security.Cryptography.MD5 = New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bytResult() As Byte = tempmd5.ComputeHash(System.Text.Encoding.Default.GetBytes(a))
Dim strResult As String = BitConverter.ToString(bytResult)
strResult = strResult.Replace("-", "")
Return strResult
End Function
如果要计算文件的就把参数改成字节数组就可以了,然后获取文件GetBytes()传进去就可以了。