我正在Unity3D中使用C#工作。我需要一个结构来保存一些值。我需要通过字符串索引访问该结构,并且值是GameObjects(但是这个问题适用于任何可能的值,是相同的)。我不知道我将在每个索引上存储多少个对象,因此它不能是数组。 我以为
Dictionary<string,List<GameObject>>
但是可以在添加索引的同时将项目添加到该列表吗?因为如果需要在将列表添加到字典之前填写列表,那么我可以拥有X个列表,而不必考虑字典。
完成此任务的最佳结构是什么?
答案 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>>
。