在Unity3d中使用C#。
我创建了一个字典,现在我想从该字典中返回一个值,而不是通过它的键,而是通过它的索引,我该怎么做?
return _nodeDictionary.Values[i];
该行给了我这个错误:
错误CS0021:无法将带有[]的索引应用于类型为“System.Collections.Generic.Dictionary.ValueCollection”的表达式
答案 0 :(得分:2)
直接使用字典,您无法通过索引访问,因为字典是无序的。
来自MSDN:
出于枚举的目的,字典中的每个项都被视为表示值及其键的KeyValuePair结构。返回项目的顺序未定义。
如果您确实需要通过索引访问,则可以使用
return _nodeDictionary.Values.ToList()[i];
请注意,这会生成一个临时列表!您应该考虑更改数据结构,因为这会破坏字典的用途。此外,由于列表具有未定义的顺序,索引i可能意味着什么。无论如何,你必须搜索列表(或字典)。