c# - 多个列表或字典?
问题描述
我在 Unity3D 中使用 C# 工作。我需要一个结构来保存一些值。我需要通过字符串索引访问该结构,并且值是 GameObjects(但这个问题适用于任何可能的值,它是相同的)。我不知道我将在每个索引上存储多少个对象,所以它不能是一个数组。我想在一
Dictionary<string,List<GameObject>>
但是可以在我添加索引的同时将项目添加到该列表中吗?因为如果我需要在将其添加到字典之前填写列表,我可以拥有 X 个列表而忘记字典。
实现这一目标的最佳结构是什么?
解决方案
您可以实现自己的多字典
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>>
或者,如果您需要添加唯一值并且顺序无关紧要,您可以创建一个。
推荐阅读
- ethereum - 使用 Web3js 发送 erc20 令牌
- ruby-on-rails - Stripe Subscription - 服务器以状态 400 响应
- vba - 如何在visual basic中随机打乱图片
- encryption - 只有一个人拥有公钥/私钥时的数字签名
- javascript - 为什么 JavaScript 函数不起作用?
- octave - 非线性拟合 Octave
- java - 为什么 ActionListener 不工作?
- python - Scrapy spider 无法正确迭代并存在 If 语句问题
- oracle - 在 Oracle Forms 中向表中插入值时如何删除 FRM-40401
- r - 如何在 R 中正确读取 KML 文件,或将集中变量分离成列