Dictionary.ContainsKey() 未按预期工作

2023-12-02

我有一本字典。

Dictionary<YMD, object> cache = new Dictionary<YMD, object>();

YMD 类是我的发明之一,它是一个仅包含年、月和日期的类。目的是数据将按相关日期建立索引。无论如何,我已经实现了 Equals() 和 CompareTo() 函数,以及 == 和 != 运算符。

尽管如此,Dictionary.ContainsKey() 函数将始终返回 false,即使键存在。

我立即认为我的比较函数一定被破坏了,但是在为所有这些函数编写单元测试之后,情况似乎并非如此。

字典课上有什么我不知道的吗?


带着字典,GetHashCode()很关键。对于相等的事物(Equals() == true) it must返回相同的数字(但允许发生冲突 - 即两个项目可以巧合地返回相同的数字,但不能被视为相等)。

另外 - 哈希码必须not当该项目在字典中时进行更改。散列readonly值对此很有好处,但也可以:不要改变它!例如,如果您的 equals / hashcode 跨越实体Name and Id(比如说),然后不要更改对象的这些属性,否则您可能永远不会再看到该记录(即使您传入与键相同的实例)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dictionary.ContainsKey() 未按预期工作 的相关文章

  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • Android NDK C++“wstring”支持

    我有用 C 编写的源代码 lib 现在我想在 Android NDK 项目 NDK 6 中编译并使用相同的源代码 lib 我能够编译大多数 C 文件 除了基于 std wstring 的功能 在 Application mk 中 当我指定时
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 如何使用汇编获取BIOS时间?

    我正在从头开始实现一个小型操作系统 用于教育目的 现在 我想使用汇编来获取 BIOS 时间 我对此进行了很多搜索 但找不到任何代码示例来执行此操作 如果有人可以提供任何参考或代码示例或与此相关的任何内容 我将非常感激 See 时钟中断 1a
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 在通过网络发送之前压缩位图

    我正在尝试通过网络发送位图屏幕截图 因此我需要在发送之前对其进行压缩 有一个库或方法可以做到这一点吗 当您将图像保存到流时 您have选择一种格式 几乎所有位图格式 bmp gif jpg png 都使用一种或多种压缩形式 因此 只需选择适
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 生成 .tail IL 指令的简单 F# 代码是什么?

    我想看看 tailIL 指令 但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环 我实际上是在猜测这一点 因为我不完全确定反射器中的循环是什么样的 我绝对没有看到任何 tail不过操作码 我在项目的属性中检查了 生成尾部调用 我还尝
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • asp.net c# 防止在从服务器端代码更改索引时触发 selectedindexchanged 事件

    我在同一个 aspx 页面上有两个下拉列表控件
  • 当在 Repository/UnitOrWork 之上使用 Service 类时,我应该在哪里放置逻辑不适合 Repository 的常用数据访问代码?

    In my 先前的问题 https stackoverflow com questions 24906548 using the generic repository unit of work pattern in large projec
  • 你能解释一下这个C++删除问题吗?

    我有以下代码 std string F WideString ws GetMyWideString std string ret StringUtils ConvertWideStringToUTF8 ws ret return ret W
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E

随机推荐

  • MEF2 中的强类型元数据 (System.Composition)

    我正在使用 System Composition 命名空间适用于 Web 和 Windows 应用商店应用 NuGet 包的 MEF在新的 ASP NET MVC4 项目中 I ve read在 MEF2 中您不再使用Lazy
  • CSS 背景过滤器在其后面的内容移动时不会更新

    我应该认为作为背后的内容backdropped元素移动时 元素的背景颜色会适应 看起来就像内容透过它发光一样 在这个例子中 情况并非如此 怎么了 在 Safari 12 0 3 macOS Mojave 10 14 3 上进行了测试 con
  • int num = new int();当这一行执行时会发生什么?

    今天了解了一个新事物 我们可以使用以下方法创建整数new运算符如下 int num new int 现在我想知道如果我以这种方式创建一个整数 那么生成的整数将是值类型还是引用类型 我想这将是一个值类型 我尝试了下面的代码 int num1
  • 生成的 Swagger REST 客户端无法正确处理查询参数的 + 字符

    我有这个 Spring REST 控制器方法 ApiOperation My method RequestMapping method RequestMethod POST value myMethod public void myMeth
  • 如何生成向量的所有可能组合

    我有一个向量 比如说A B C D E我有兴趣生成向量元素的所有可能的组合 下面给出了所需的输出 B A C A D A E A C B D B E B D C E C E D Try combn v1 2 FUN function x p
  • 如何在 JPA 中表达多态关联?

    A 多态关联类似于外键或多对一关系 不同之处在于目标可能是多种类型之一 语言中的类 数据库中的表 我正在将我使用多年的数据库设计从 PHP 移植到 Java 在旧代码中 我推出了自己的 ORM 但由于多种原因 它并不是最佳的 尽管我可能稍后
  • Google 地图容器显示没有地图

    我知道这个问题之前已经被问过很多次了 但是我见过的其他答案似乎都没有帮助我 基本上 地图的容器显示 作为页面上 500x300px 的空白 但没有地图 无论我做什么 我都无法显示地图 正如您可能猜到的那样 我不熟悉 Google 地图 因此
  • 将自动完成列表中的国家/地区的 Google 地图限制为“印度、美国和英国”

    该代码不起作用 请告诉我具体的解决方案 javascript gt
  • 为什么 readfile() 在读取 php 文件时表现得很奇怪,但在文本文件上却工作得很好

    代码在index php hello php 中的代码 我得到的输出是47但是当我在 hello php 中的字符串之前添加一行时 即echo br hello this is a php file 我得到输出hello this is a
  • 使用 python 3 专门化 JSON 对象编码

    由于Python3中dict values 和keys 的更改 我遇到了一些麻烦 我的旧代码是这样的 import json class ComplexEncoder json JSONEncoder def default self ob
  • 生成重复序列

    我需要使用 R 生成以下格式的向量 1 10 1 10 11 20 11 20 121 130 121 130 有没有比创建 12 个向量然后将每个向量重复两次更简单的方法 你也可以这样做 rep 1 10 26 rep seq 0 120
  • 避免多次快速点击按钮

    我的应用程序有一个问题 如果用户快速单击按钮多次 那么在按住按钮的对话框消失之前就会生成多个事件 我知道一个解决方案 通过在单击按钮时将布尔变量设置为标志 以便可以防止将来的单击 直到对话框关闭 然而 我有很多按钮 每次都必须为每个按钮执行
  • 在 mongodb 集合中查找一些值?

    我正在尝试使用 java 读取 mongodb 用户数据库 在教程页面上我看到了如何阅读整个集合 我可以做这样的事情 DBCursor cursor col find while cursor hasNext System out prin
  • 创建表,检查可能的文本值

    我正在使用 MS Access 2010 并尝试使用 SQL 创建表 我想加入一些检查约束 但我遇到了一些麻烦 CREATE TABLE Test tester Text CHECK tester IN ABC BCD CDE 我遇到语法错
  • `use` 包作用域:如何使其跨文件?

    In scriptA pl 有use DBI In scriptB pl 有require scriptA pl 但我们仍然不能使用DBI包scriptB pl 除了重复之外有任何方法可以处理这个问题use DBI in scriptB p
  • 在 PIL 中制作拼贴画

    我是 卡住 我已经为此工作了一个多星期了 但我似乎无法让我的代码正确运行 我对 PIL 和 Python 整体来说还很陌生 我正在尝试制作一些图片的 2x3 拼贴画 下面列出了我的代码 我试图让我的照片适合新创建的拼贴画中的任何访问黑色空间
  • 如何在 python 3.6 而不是默认的 python 2.7 上安装 pip?

    所以一整天我都在尝试安装pip 我已经执行了curl https bootstrap pypa io get pip py gt get pip py Then sudo python get pip py 接下来我去安装 numpysud
  • 嵌套片段可能吗?

    我有一个 ViewPager 包含三个片段 我想将 3 个新片段放入第三个片段中 这可能吗 ViewPager Fragment 1 Fragment 2 Fragment 3 Fragment 3 1 Fragment 3 2 Fragm
  • 物体(汽车)检测与分割

    I am trying to segment cars from image that consist of only one car and an easy background like but what I get from my i
  • Dictionary.ContainsKey() 未按预期工作

    我有一本字典 Dictionary