这个 Dictionary 异常怎么可能?

2023-11-25

给出以下堆栈跟踪:

MESSAGE: Value cannot be null.Parameter name: key  
SOURCE: mscorlib  
TARGETSITE: Void ThrowArgumentNullException(System.ExceptionArgument)  
STACKTRACE:  
   at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)  
   at System.Collections.Generic.Dictionary'2.FindEntry(TKey key)  
   at System.Collections.Generic.Dictionary'2.get_Item(TKey key)  
   at MyCompany.MAF.Agent.ServiceContracts.ConvertUtils.Convert(Dictionary'2 from) in D:\Development\MAF\Agent\MyCompany.MAF.Agent\ServiceContracts\ConvertUtils.cs:line 11

我的结论是,以下代码块以某种方式从输入字典的 Keys 集合中检索到了 null。然而,输入字典是一个实例Dictionary<string, string>.实施Dictionary<string, string>使这种情况不可能发生。添加带有空键的项目时,会引发异常。

internal static KeyValuePair<string, string>[] Convert(IDictionary<string, string> from)
{
    List<KeyValuePair<string, string>> ret = new List<KeyValuePair<string, string>>();
    foreach (string key in from.Keys)
        ret.Add(new KeyValuePair<string, string>(key, from[key]));
    return ret.ToArray();
}

我经常遇到这个问题,因为我犯了允许多个线程访问同一字典的错误。确保情况并非如此,因为Dictionary不是线程安全的。

(顺便说一下,你的方法可以大大简化。Dictionary<K,V>已经是一个IEnumerable<KeyValuePair<K,V>>。你应该能够做ToArray on one.

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

这个 Dictionary 异常怎么可能? 的相关文章

  • 静态成员函数与C语言绑定?

    以下 C 代码可使用 Visual C 和 g 进行编译 struct S static void foo extern C void S foo struct T static void foo extern C void T foo a
  • .NET ListView列顺序问题

    我在表单中遇到问题 我已按以下顺序将列添加到 NET ListView 控件 A B C D A D 列的显示索引按顺序为 0 3 但它们的显示顺序错误 A B D C these are switched at runtime 注意 一切
  • ZedGraph 缩放和调整大小

    当我绘制图形 放大和缩小并重新绘制图形时 图形的位置不会改变 我想要做的是 每当重新绘制数据时 视图都会更改以查看所有图形数据 如果您在重绘之前放大或缩小 这似乎会被禁用 Thanks 设置属性 IsZoomOnMouseCenter对于控
  • 无法在更新面板中找到上传的文件

    aspx
  • C++17 中带有 noexcept 的 std::function

    在 C 17 中noexcept 已添加到类型系统中 http www open std org jtc1 sc22 wg21 docs papers 2015 p0012r1 html void r1 void f noexcept f
  • 如何获取任意类型的默认值

    在 C 中我可以写这样的东西 class AnyThing
  • ResourceDictionary 源中的 Uri 语法(通用 Windows 平台)

    我正在迁移我的Windows 8 1项目到Windows 10 通用 Windows 平台 这时我被拦住了ResourceDictionary改变在UWP 为了简单起见 我有包含 2 个项目的 Windows 8 1 解决方案 App pr
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 在 DefaultHttpContext 上使用 FeatureCollection 时,响应对象为 null

    我正在测试一些 net Core 中间件 并希望使用整个 asp net Core http 管道来运行中间件 而不是模拟它 问题是 当我使用特征集合时 不知何故 响应对象没有在 httpRequest 中设置 并且它在请求本身上是只读的
  • 锁定文件的一个块

    我有一个大小为 192k 的文件 我想锁定文件的中间部分 例如 我想用 c 锁定文件的 64k 128k 知道如何锁定文件的那部分吗 你需要使用锁定文件Ex http msdn microsoft com en us library win
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • C语言:如何获取使用strtok()一次后剩余的字符串

    我的字符串是 A B C D E 分隔符是 如何获取执行 strtok 一次后剩余的字符串 即 B C D E char a A B C D E char separator char b strtok a separator printf
  • C语言中如何将整数转换为字符? [复制]

    这个问题在这里已经有答案了 C语言中如何将整数转换为字符 C 中的字符已经是数字 字符的 ASCII 代码 无需转换 如果要将数字转换为相应的字符 只需添加 0 即可 c i 0 0 是 ASCii 表中的一个字符
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • 如何从句柄确定进程是 32 位还是 64 位?

    如何从使用 OpenProcess 获取的进程句柄中获取信息 无论进程是 32 位还是 64 位 是的 IsWow64Process 毫无用处 令人烦恼 它的真正意思是 启用了 32 位模拟 如果您在 32 位操作系统上运行 则返回 fal
  • 序列化时如何跳过 xml 声明?

    我正在尝试输出一个没有 xml 头的 xml 文件 例如 我试过 Type t obj GetType XmlSerializer xs new XmlSerializer t XmlWriter xw XmlWriter Create c
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • 即使对于新上下文,OnModelCreating 也仅调用一次

    我有多个相同但内容不同的 SQL Server 表 在编写代码优先 EF6 程序时 我尝试为每个程序重用相同的数据库上下文 并将表名称传递给上下文构造函数 然而 虽然每次都会调用构造函数 但尽管每次都是从 new 创建数据库上下文 但 On
  • 没有运算符“<<”与这些操作数匹配[重复]

    这个问题在这里已经有答案了 不知道发生了什么事 我查看了与此问题类似的其他帖子 但到目前为止没有解决方案有帮助 这是带有错误部分注释的代码 在某一时刻 它说 不起作用 而在代码的其余部分中 它说 include
  • 如何通过Task.ContinueWith创建传递?

    我想在原始任务结束时添加一个任务 但想保留原始结果和类型 附加任务仅用于记录目的 例如写入控制台等 例如 Task Run gt DateTime Now Hour gt 12 Hey throw new Exception Continu

随机推荐

  • 显示通知 DIV 时如何“调暗”网页的其余部分?

    在我的网络应用程序中 我显示了一个 通知 DIV 我想 调暗 页面的其余部分 以便通知 DIV 在显示时更加突出 有没有一种相当简单的方法可以做到这一点 这个问题只涉及视觉效果 而不涉及页面其余部分的功能 下面是我在网络其他地方找到的功能示
  • 更新 select2 数据而不重建控件

    我正在转换一个
  • 在 Python 中编写固定宽度、空格分隔的 CSV 输出

    我想使用 Python 的 csv writer 编写一个固定宽度 空格分隔和最少引用的 CSV 文件 输出示例 item1 item2 next item1 next item2 anotheritem1 anotheritem2 If
  • 查找字符串中所有重复的子字符串以及它们出现的频率

    Problem 我需要满足以下条件的所有字符序列 字符序列必须出现多次 LE 1 因此无效 字符序列必须长于 1 个字符 因此 M 2 无效 字符序列不得是出现相同次数的较长现有序列的一部分 因此 如果 LIO 2 存在 则 LI 2 无效
  • 我对 getline+strings 不明白什么?

    这是我第一次使用 stackoverflow 我一直无法找到有关 getline 的所需信息 我正在参加一个简单的工程转移编程课程 因此我们编写的代码非常简单 我在这里想做的就是将用户定义数量的问题和答案放入两个不同的数组中 我的 whil
  • 我想每秒调用 20 次 installTapOnBus:bufferSize:format:block:

    我想实时显示麦克风输入的波形 我已经使用installTapOnBus bufferSize format block 实现了 这个函数一秒钟调用3次 我想设置这个函数每秒被调用20次 我可以在哪里设置 AVAudioSession aud
  • 为什么在调用 getWriter() 后无法更新 HttpServletResponse 标头?

    今天下午修复了一个问题后 我一直在网上进行挖掘 其中添加到 HttpServletResponse 的 Cookie 没有正确反映在响应标头中 因为我们的 Servlet 之前已经检索了响应的 PrintWriter 即 response
  • TransitionWithView 和 animateWithDuration 的问题

    我有以下问题transitionWithView and animateWithDuration 我的一个animateWithDuration块不会转换 它是突然的变化 并且transitionWithView不会暂时禁用用户交互 我已经
  • 动态查找代表原始 Java 类型的类

    我需要在 Java 中进行一些反射方法调用 这些调用将包括具有基本类型 int double 等 参数的方法 反射查找方法时指定此类类型的方式有 int class double class 等 挑战在于我接受来自外部源的输入 该输入将动态
  • 正文超出固定导航栏的顶部

    我有一个固定的导航栏 滚动时跟随 但是 在滚动标签内的文本 图像时 它似乎位于导航栏的前面 而不是后面 为什么是这样 我该如何修复它 Fiddle nav background color 262626 height 60px width
  • 在Linux上自动杀死消耗过多内存或停止的进程

    我想要一个监视进程并在以下情况下杀死该进程的 系统 该进程超出了某些内存要求 该进程在一段时间内没有响应来自 系统 的消息 我认为这个 系统 可能像监控过程一样简单 有关如何完成此操作的代码示例将很有用 我当然不反对对这个问题采取完全不同的
  • 如何使用 LinqToTwitter 获取主题标签上的所有推文

    我正在尝试获取属于主题标签的所有推文 计算推文总数 我的功能在这里 如何使用 maxID 和sinceID 来获取所有推文 代替 数 的是什么 我不知道 if maxid null var searchResponse await from
  • 仅在 PrimeFaces 中通过 p:dataTable 进行更新后刷新页面时才会显示 BLOB 图像

    我在 MySQL 上显示以 BLOB 形式存储的图像
  • Storyboard DoubleAnimation 不适用于 StackPanel 高度属性

    我正在尝试使用 DoubleAnimation 来更改 StackPanel 的 Height 属性 该代码不会引发任何异常 但动画不起作用
  • 如果使用桥接标头,Xcode 7 不会自动完成

    所以 问题是 当我使用桥接标头导入 Xcode 7 中的任何内容时 Xcode 不会自动完成我的代码 无论我是否导入给定的框架 当前 swift 中的头文件 如果它只是在桥接标头中 Xcode 不会自动完成我的代码自动完成 尽管情况因框架而
  • SCRIPT5:在 IE9 中文件上传时访问被拒绝

    使用文件上传框发布表单时document forms 0 submit 在 ie 9 上 我们收到一条错误消息 SCRIPT5 Access is denied 如果我再点击几次就可以了 作为一种解决方法 我发现了错误并尝试了几次 这似乎工
  • 验证 Paperclip 中的扩展 - Ruby on Rails

    我发现 Paperclip 可以验证文件内容类型 即 image jpeg 但我想专门验证扩展名 这是因为我正在使用一个不起眼的扩展 它不会获得一致的内容类型 有人知道这是否可行 或者是一个好方法吗 猜猜看 没有必要用回形针的方法来验证 你
  • 如何使用 HTML 创建菜单树

    我需要使用 HTML 创建一个菜单树 我在谷歌上进行了搜索 但他们提供了一些软件供下载以创建此内容 但我需要一些脚本和 HTML 标签来执行此操作 谁能帮我解决这个问题 提前致谢 这是一个非常简单的开始 http www dynamicdr
  • 如何利用转义来防止XSS攻击?

    为了防止XSS攻击 输出 已启用转义 上面来自symfony 但我不明白 XSS 是 跨站脚本 的缩写 当您设法将脚本 通常是 javascript 偷偷溜到其他人的网站上并在那里恶意运行时 就会发生跨站点脚本攻击 当用户向网站输入内容时
  • 这个 Dictionary 异常怎么可能?

    给出以下堆栈跟踪 MESSAGE Value cannot be null Parameter name key SOURCE mscorlib TARGETSITE Void ThrowArgumentNullException Syst