【发布时间】:2019-05-11 13:55:39
【问题描述】:
我在 Unity3D 中使用 C# 工作。我需要一个结构来保存一些值。我需要通过字符串索引访问该结构,并且值是 GameObjects(但这个问题适用于任何可能的值,它是相同的)。我不知道我将在每个索引上存储多少个对象,所以它不能是一个数组。 我想在一个
Dictionary<string,List<GameObject>>
但是可以在我添加索引的同时将项目添加到该列表中吗?因为如果我需要在将其添加到字典之前填写列表,我可以拥有 X 个列表而忘记字典。
实现这一点的最佳结构是什么?
【问题讨论】:
-
if(dictionary.ContainsKey("MyKey")) { // Update the existing list }else{ // Insert new key with new value } -
即字典在每个索引上都有 1 个元素。我想在每个索引上都有一个列表。所以我必须将它添加到列表中,而不是字典中。
-
没有。你刚才说的是字典是如何工作的。我从来没有说过没有在每个索引上都有一个列表。通过将元素添加到字典中特定键的列表来更新字典有什么问题?
-
您在这里的思路完全正确。您可以在将项目添加到字典之前或之后将项目添加到 List
,它是对 List 的引用,因此它将完全按照您的预期工作。 -
使用 Linq : Dictionary
> dict = objects.GroupBy(x => x.index, y => y) .ToDictionary(x => x.Key, y = > y.ToList());
标签: c# arrays list dictionary