Dictionary.ContainsKey 返回 False,但想要 True

2024-02-10

namespace Dic
{
public class Key
{
    string name;
    public Key(string n) { name = n; }
}

class Program
{
    static string Test()
    {
        Key a = new Key("A");
        Key b = new Key("A");
        System.Collections.Generic.Dictionary<Key, int> d = new System.Collections.Generic.Dictionary<Key, int>();
        d.Add(a, 1);
        return d.ContainsKey(b).ToString();
    }

    static void Main(string[] args)
    {
        System.Console.WriteLine(Test());
    }
}
}

我应该改变什么才能成为现实?


你想要 true - 但 a 和 b 是不同的对象。

您需要重写类 Key 上的 GetHashCode 和 Equals

public class Key
{
    string name;
    public Key(string n) { name = n; }

    public override int GetHashCode()
    {
        if (name == null) return 0;
        return name.GetHashCode();
    }

    public override bool Equals(object obj)
    {
        Key other = obj as key;
        return other != null && other.name == this.name;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dictionary.ContainsKey 返回 False,但想要 True 的相关文章

  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 如何在加载.NET WinForm应用程序user.config文件时捕获异常?

    有时 在使用默认配置系统的 NET 2 0 WinForm 桌面应用程序中 user config文件将被损坏并且无法再加载 当配置系统尝试加载它时 它会抛出一个System Xml XmlException 抛开 为什么文件首先被损坏 的
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

  • Apache HttpClient 4.1 - 代理身份验证

    我一直在尝试使用 Apache HttpComponent 的 httpclient 时从配置的属性配置代理身份验证的用户和密码 但没有成功 我发现的所有示例都引用了不再可用的方法和类 例如HttpState and setProxyCre
  • 如何观察 Vue.js 组件中 prop 的变化?

    我将图像文件路径数组传递给组件 我想知道如果我传递不同的数组 在 Vue js 组件中观察 prop 更改的最佳方式是什么 我正在使用引导轮播 所以想在数组更改时将其重置为第一个图像 为了简单起见 我将代码示例简化为 Vue compone
  • Chrome 如何检测信用卡字段?

    在某些表单中 Chrome 自动填充会提示信用卡自动填充 编辑 添加屏幕截图 这与浏览器自动完成不同 您之前不必以相同的形式输入该值 我应该如何编写 HTML 表单 以便浏览器将其检测为信用卡字段并触发此行为 与 Stripe 表单一起使用
  • 从 SVG 矩形元素获取每个像素的 RGB 值

    我需要获取 svg 矩形元素中每个像素的颜色值 在 canvas 中我们可以通过方法 getImageData x y width height 获取它 在svg中 有什么方法可以做到这一点吗 如果是的话请给出一些工作示例 如果您创建一个独
  • 从 Wordpress 创建关联数组 $wpdb->get_results

    这是漫长的一天 出于某种原因 这完全让我无法理解 我的 WordPress 数据库请求如下所示 results wpdb gt get results sql 输出看起来像这样 Array 0 gt stdClass Object id g
  • 选择默认值后,Android Complete 操作会继续显示

    我在应用程序开发中遇到了一个奇怪的问题 在我的应用程序中的某个时刻 它会调用 Intent Intent ACTION SEND 来启动 Gmail 将出现 使用 完成操作 对话框 即使我选中底部的默认框并选择 Gmail 下次我的应用程序
  • 离子电容器:错误:未在网络上实现

    完成迁移后cordova to capacitor 运行时出现以下错误ionic s Error vendor js 114293 ERROR Error Uncaught in promise Error Not implemented
  • 找不到类“android.support.v4.widget.SwipeRefreshLayout”[重复]

    这个问题在这里已经有答案了 我不断收到此错误 它导致我的应用程序崩溃 尝试实现新的 v4 滑动刷新布局 我已经更新了支持库 sdk 问题是什么 找不到类 android support v4 widget SwipeRefreshLayou
  • 如何使用 boost.python 公开对齐的类

    当尝试像这样公开对齐的类时 class declspec align 16 foo public void foo method BOOST PYTHON MODULE foo module class
  • GWT 中共享包的重要性

    我意识到 GWt 不会编译不在客户端包中的类 但共享包的重要性是什么 我需要在这个包中放入哪些类 我需要上哪些课程 放入这个包中 客户端和服务器都使用的任何逻辑或数据类型 这将使您免于复制双方的代码 并可能保留逻辑和数据类型持续的
  • HttpRequestMessage 内容中的文件名

    我实现了 POST Rest 服务来将文件上传到我的服务器 我现在遇到的问题是我想按类型限制上传的文件 举例来说 我只想允许上传 pdf 文件 我试图做的是 Task
  • 从 Eclipse 菜单 Window -> Show View 中删除视图名称

    我需要删除从 窗口 gt 显示视图 菜单创建的视图的名称 快捷方式 并将它们添加为单独的菜单 有什么方法可以从 窗口 gt 显示视图 菜单中隐藏 删除其条目 您可以从 自定义透视 菜单可见性 选项卡的 显示视图 菜单中添加 删除任何视图 以
  • docker在aws ecs中运行程序参数

    我在 Amazon 的 ECS 中有一个工作容器 它将程序作为任务运行 我想传递一些程序参数 就像我在本地运行时所做的那样docker run 我已经成功地在 ECS 的容器配置中传递了一个新的入口点 就像我在docker run命令行 不
  • 由于定义顺序,常量初始化“令人惊讶”

    阅读时关于 constexpr 的幻灯片 http accu org content conf2007 Maurer C 0x Generating Constant Expression pdf简介是关于 使用 const 进行令人惊讶的
  • 在C语言中连接字符串,哪种方法更有效?

    我遇到了这两种连接字符串的方法 共同部分 char first First char second Second char both malloc strlen first strlen second 2 方法一 strcpy both f
  • Apple Watch:状态栏高度

    有人知道 Apple Watch 状态栏的大小吗 无论是在 Apple Watch 人机界面指南还是 Apple Watch 编程指南中 我都无法在文档中找到这样的价值 所以 我已经测量过它们了 38mm 19pt 38px 42mm 21
  • char* - 为什么指针中没有地址?

    我有一个基本问题char 我不明白 char aString Hello Stackoverflow 指针指向字符链的第一个字符 cout lt lt aString H 但为什么整个字符串都保存在指针中呢 cout lt lt aStri
  • 写入内存映射文件后,什么会更新 mtime?

    我在 Linux 上使用 XFS 并且有一个内存映射文件 每秒写入一次 我注意到文件 mtime 由watch ls full time 周期性但不规则地变化 mtimes之间的差距似乎在2到20秒之间 但并不一致 系统上几乎没有其他东西在
  • 如何在php中显示特定mysql数据库中的所有表名

    我正在尝试显示数据库中的所有表名 这是我的代码 所显示的一切1对于每个条目 我不知道为什
  • Dictionary.ContainsKey 返回 False,但想要 True

    namespace Dic public class Key string name public Key string n name n class Program static string Test Key a new Key A K