在我看来,最简单的方法是通过简单地将日期转换为字符串并连接来创建密钥:
MyKey = BalDate.ToString & "|" & AcctNum
我知道我也可以选择通过编写一个单独的类来创建一个复合键,并重写GetHashCode()和Equals()a la this solution.
对我来说,连接字符串是一个更简单,如果不那么优雅的解决方案.我错过了一些令人信服的理由,为什么我应该采用复合密钥类方法?
这个查找是我正在进行的项目的关键,因此性能是我的主要目标(可读性紧随其后).
解决方法 您还可以通过继承Dictionary(Of TKey,TValue)来创建专门的集合Public Class BalanceDict inherits Dictionary(Of String,Balance) Public Shadows Sub Add(ByVal bal As Balance) MyBase.Add(bal.BalDate & "|" & bal.AcctNum,bal) End Sub Public Shadows Function TryGetValue(ByVal balDate As Date,ByVal acctNum As String,<OutAttribute()> ByRef bal As Balance) As Boolean Return MyBase.TryGetValue(balDate & "|" & acctNum,bal) End FunctionEnd Class
我不认为复合键和连接字符串之间的速度差异很大.使用复合键,您不必将日期转换为字符串;但是,您必须计算不同的哈希码并将它们组合在一起.但是,通过使用字典的专门实现,您可以隐藏这些实现细节,并随时决定更改生成密钥的方式,而不会影响程序的其他部分.
总结以上是内存溢出为你收集整理的vb.net – 字典访问:复合键vs连接字符串索引全部内容,希望文章能够帮你解决vb.net – 字典访问:复合键vs连接字符串索引所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)