在字典的列表中添加变量(Dictionary<Key,List<var>)unity C#

Posted

技术标签:

【中文标题】在字典的列表中添加变量(Dictionary<Key,List<var>)unity C#【英文标题】:adding a variable in a list on a dictionary (Dictionary<Key , List<var>) unity C# 【发布时间】:2021-02-14 06:35:17 【问题描述】:

这就是我想要的

个人电脑组件的集合 然后分组到 ram、storage、gpu、cpu、psu 等 PC 组件。他们是关键 那么它们的每个内部都有多个相同类型的对象

例如。 ram->金士顿,adata,hyperx |存储->WD,隔离 你明白了

我的问题是如何在列表中添加值

示例将 intel(var) 添加到 cpu(list) 到 pc components(collection)

在 java 中很容易做到这一点,因为这是你在 Map 中的做法

Map<Key,List<string>> map = new Hashmap<key,object>();
map.put(pcComp.ComponentType).add("kingston");

但在 C# 统一中,您将像这样同时放置键和值

Components.Add(pcComp.ComponentType,new List<>)

顺便说一句,pcComp.ComponentType 是一个枚举

如果列表中有内容怎么办

new List&lt;&gt; 无法正常工作,因为它会被替换?

【问题讨论】:

不好的解释 sry idk 如何表达这个:) 新列表 myList = new List(); Components.Add(pcComp.ComponentType,new List); myList.Add("abc");在哪里添加 abc 并不重要。 myList 就像一个指针,可以在构造函数之后的任何位置添加值。 但是如果集合列表中有值怎么办?它会被替换吗? @jdweng​​span> myList["cpu].Add(someCpu); 这将添加一个 cpu 而不会删除其他 cpu。 哦,您可以将arraylist 和collection 视为普通数组吗?什么!?谢谢你的帮助!!,我来自 java 这就是为什么 idk 那可能 【参考方案1】:

根据@jdweng 和@Events 你可以这样做

Components[pcComp.ComponentType].Add(pcComp.name);

您可以将集合和arraylist 视为普通数组

不像java

Arraylist.get(0) ir Arraylist.add(var)

【讨论】:

正确的方法是使用 TryGetValue 以获得安全和快速的代码,但你明白了。

以上是关于在字典的列表中添加变量(Dictionary<Key,List<var>)unity C#的主要内容,如果未能解决你的问题,请参考以下文章

防止在字典c#中作为值添加的对象的重复变量

你能熟练使用Dictionary字典和List列表吗?(转)

列表中的c#字典[重复]

python 数据类型: 数字Nubmer / 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

只读列表<字典<>>

在 C# 中对字典列表进行分组