.net 为Valueranges生成哈希代码
最近我遇到了以下问题:.net 为Valueranges生成哈希代码,.net,dictionary,hashcode,.net,Dictionary,Hashcode,最近我遇到了以下问题: 如果给定的值在特定的值范围内,我想显示一些特殊的内容。 因为在启动应用程序之前,我不知道这个范围是什么样子,也不知道需要检查哪些值,所以我使用字典将valueranges作为键来读取,并将输出作为值来读取。 为了让字典正常工作,我需要重写equals和hash代码函数,问题就从这里开始了。 如何生成哈希代码,以便如果我的字典包含 //This is pseudo code [0|10]->Low [11|50]->Medium [51-100]->Hig
如果给定的值在特定的值范围内,我想显示一些特殊的内容。 因为在启动应用程序之前,我不知道这个范围是什么样子,也不知道需要检查哪些值,所以我使用字典将valueranges作为键来读取,并将输出作为值来读取。
为了让字典正常工作,我需要重写equals和hash代码函数,问题就从这里开始了。
如何生成哈希代码,以便如果我的字典包含
//This is pseudo code
[0|10]->Low
[11|50]->Medium
[51-100]->High
当我查询2时,我的字典返回我Low
我解决这个问题的方法是简单地重写对象buy always返回-1的getHashcode函数,这样在任何情况下都需要调用equals方法。这听起来不是个好主意,但却是我想到的唯一解决办法
是否有任何方法可以将hashcode的概念映射到值范围,如果有,会是什么样子
答案的代码语言并不重要,因为我更感兴趣的是一般方法,而不是语言实现您试图使用
字典
的方式会误导将来试图理解您代码的任何人。
字典
是最常用的结构之一。每个程序员和应用程序都希望符合IDictionary
接口的对象以某种方式运行,并将一个键连接到一个值
我的建议是使用策略模式
创建一个类AdditionalActionController
,其中包含可能的显示操作列表(策略接口列表)。您可以通过执行以下命令来使用它:
AdditionalActionController.DoSomethingForGivenValue(值)
此方法对列表中的每个策略对象执行trydosomethingcredenvalue
。
方法trydosomethingcredenvalue
实现:
LowStrategy->如果值在0-10范围内,则执行某些操作
中间策略->如果值在11-50范围内,则执行其他操作
这种方法:
- 允许动态更改策略列表中的元素
- 更容易被别人理解
- 更容易测试-您可以单独测试每个策略
- 对将来的修改更开放