获取并索引字典<vector3,node> .values

时间:2016-05-11 17:16:51

标签: c# dictionary unity3d

在Unity3d中使用C#。

我创建了一个字典,现在我想从该字典中返回一个值,而不是通过它的键,而是通过它的索引,我该怎么做?

return _nodeDictionary.Values[i];

该行给了我这个错误:

错误CS0021:无法将带有[]的索引应用于类型为“System.Collections.Generic.Dictionary.ValueCollection”的表达式

1 个答案:

答案 0 :(得分:2)

直接使用字典,您无法通过索引访问,因为字典是无序的。

来自MSDN

  

出于枚举的目的,字典中的每个项都被视为表示值及其键的KeyValuePair结构。返回项目的顺序未定义。

如果您确实需要通过索引访问,则可以使用

return _nodeDictionary.Values.ToList()[i];

请注意,这会生成一个临时列表!您应该考虑更改数据结构,因为这会破坏字典的用途。此外,由于列表具有未定义的顺序,索引i可能意味着什么。无论如何,你必须搜索列表(或字典)。