多个列表或字典?

时间:2019-05-11 13:55:39

标签: c# arrays list dictionary

我正在Unity3D中使用C#工作。我需要一个结构来保存一些值。我需要通过字符串索引访问该结构,并且值是GameObjects(但是这个问题适用于任何可能的值,是相同的)。我不知道我将在每个索引上存储多少个对象,因此它不能是数组。 我以为

Dictionary<string,List<GameObject>>

但是可以在添加索引的同时将项目添加到该列表吗?因为如果需要在将列表添加到字典之前填写列表,那么我可以拥有X个列表,而不必考虑字典。

完成此任务的最佳结构是什么?

1 个答案:

答案 0 :(得分:0)

您可以实现自己的多字典

public class MultiDictionary<TKey, TValue> : Dictionary<TKey, List<TValue>>
{
    public void Add(TKey key, TValue value)
    {
        if (TryGetValue(key, out List<TValue> valueList)) {
            valueList.Add(value);
        } else {
            Add(key, new List<TValue> { value });
        }
    }
}

请注意,我正在添加一个Add方法,以便能够自动添加单个值而无需处理列表。该类继承了原始的Add方法,该方法还允许您添加整个列表。

或者,如果您需要添加唯一值并且顺序无关紧要,则可以创建Dictionary<TKey, HashSet<TValue>>