c# - C# - 使用列表初始化字典时出现 KeyNotFoundException价值观
问题描述
初始化静态字典时抛出 KeyNotFoundException(“字典中不存在给定的键”)。代码如下:
public class Test {
static public Dictionary<string,List<string>> dictionary = new Dictionary<string,List<string>>() {
["key1"] = {"testing","testingagain"},
["key2"] = {"testing","testingagain"}
};
}
但是,如果使用 List 构造函数显式初始化字典,则它是成功的:
public class Test {
static public Dictionary<string,List<string>> works = new Dictionary<string,List<string>>() {
["key1"] = new List<string>() {"testing","testingagain"},
["key2"] = new List<string>() {"testing","testingagain"}
};
}
我认为,由于第一个编译得很好,编译器会知道它们是List<string>
对象,并且示例会给出相同的结果。他们为什么不呢?
解决方案
因为List<T>
实现IEnumerable
并包含 的定义Add
,以及集合初始化器在 C# 中的工作方式,所以该声明在编译时有效,但同样由于您尚未实际初始化,List<string>
它在运行时由于内存分配而变得无效。
推荐阅读
- .net-core - 需要帮助模拟界面
- highcharts - 如何更改 HighCharts 工具顶部以显示更多详细信息
- python-3.x - 下载由 URl 在 Python 中生成的文件
- c# - 禁用 dotnet 测试生成的挂起转储
- javascript - 如何在 React 中实现 TinyMCE 到共享文本区域并返回其更新状态?
- regex - 如何在 word VBA 中找到使用正则表达式并将每个匹配项替换为匹配项中的子字符串?
- google-app-engine - 用于 dotnet core webapi 和 angular ui 的 GCP App Engine dispatch.yaml
- android - 即使 layout_constraintHeight_max/min 设置为 200dp,高度也不正确
- javascript - 将 const 数据从功能组件传递到类组件
- discord.js - 所以我正在尝试制作一个不和谐的机器人,它可以发送 js 格式的随机图片,但我不知道如何