.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范围内,则执行其他操作

这种方法:

  • 允许动态更改策略列表中的元素
  • 更容易被别人理解
  • 更容易测试-您可以单独测试每个策略
  • 对将来的修改更开放
例如,假设将来您必须为与其他行为重叠的新范围添加另一个行为:

NewsStrategy->如果值在5-20范围内,请再做一件事