【发布时间】:2018-03-04 07:37:52
【问题描述】:
这个问题和this one基本一样,虽然那个人的问题的答案原来是一个简单的尾随空格。
我的问题是我从 Web API 中检索数据作为字典,然后尝试从中获取值。我正在使用TryGetValue,因为并非字典中的每个项目都必然包含每个键。出于某种原因,虽然我可以毫无问题地获得一个键的值,但对于另一个键 TryGetValue 总是评估为假,因此不会返回该值,即使我可以在调试中看到密钥存在。
因此,此块总是检索“System.Description”键的值(如果存在):
string descriptionValue = "";
if (workItem.Fields.TryGetValue("System.Description", out descriptionValue))
{
feature.Description = descriptionValue;
}
但是,这个几乎相同的块永远不会检索“CustomScrum.RoadmapGroup”键的值:
int RoadmapGroupValue = 0;
if (workItem.Fields.TryGetValue("CustomScrum.RoadmapGroup", out RoadmapGroupValue))
{
feature.RoadmapGroup = RoadmapGroupValue;
}
正如您在此屏幕截图中看到的那样,字典确实包含一个名称与我的 TryGetValue 语句完全匹配的键:
如果我在 TryGetValue 语句计算结果为真 (feature.Description = descriptionValue;) 时应该运行的代码上设置断点,则它永远不会被命中。
对于字典中的每个项目,feature.RoadmapGroup 变量都设置为 0。
至少过去两个小时我一直盯着这个看,我看不出我做错了什么。
【问题讨论】:
-
如果您尝试改用字符串会怎样?字符串 RoadmapGroupValue = "0";
-
@ShakSmith 我试过了,
TryGetValue仍然评估为 false,如果找到密钥,则永远不会运行它应该运行的代码。 -
字典是如何声明的?它的值的类型是什么?
-
你能试试
workItem.Fields["CustomScrum.RoadmapGroup"]之类的东西,看看你能不能找回你的价值吗? -
@Sach 好的,如果我修改我的代码,使字典只包含“CustomScrum.RoadmapGroup”键存在的项目,然后用
feature.RoadmapGroup = (int)workItem.Fields["CustomScrum.RoadmapGroup"];替换TryGetValue块,我得到一个@987654336 @ 错误。我正在转换为整数,因为 feature.RoadmapGroup 是一个整数。
标签: c# dictionary trygetvalue