我正在尝试使用AppSettings
,但我收到以下错误:
不能将'SpawnGroup'类型转换为'List'。
这是我的代码:
List<>
,错误发生在这里:
private List<SpawnGroup> spawnsByMapId = new List<SpawnGroup>();
我需要做什么?
解决
即时通讯使用字典List<SpawnGroup> mapSpawnGroups = spawnsByMapId[worldId];//Error
使此代码正常工作
private Dictionary<int, List<SpawnGroup>> spawnsByMapId = new Dictionary<int, List<SpawnGroup>>();
答案 0 :(得分:4)
[worldId]
您可以访问SpawnGroup
中的单个List<SpawnGroup>
对象...
SpawnGroup mapSpawnGroups = spawnsByMapId[worldId];//No Error
编辑添加:您询问如何将此项添加到其他列表中,有两种方法:
// 1. Create a new object, add item later
var mapSpawnGroups = new List<SpawnGroup>()
mapSpawnGroups.Add(spawnsByMapId[worldId])
// 2. or this way, create new object and add item directly
var mapSpawnGroups = new List<SpawnGroup>() { spawnsByMapId[worldId] }
编辑:刚考虑过它^^ ...如果您的[SpawnGroup]
课程如下:
public class SpawnGroup : List<SpawnGroup>
然后它会工作;)虽然我不认为这是你要求的
答案 1 :(得分:0)
@TripleEEE的回答是正确的。
基本上,您需要了解List是什么。想象一下List作为动态数组,它可以改变它的长度,插入/删除元素等。引用List中的元素与数组中的元素相同。另外,List是一个模板类,也就是说,它的元素类型不固定。考虑到这一点,
private List<SpawnGroup> spawnsByMapId = new List<SpawnGroup>(10);
类似于
private SpawnGroup[] spawnsByMapId = new SpawnGroup[10];
使用后者,您知道您无法执行以下操作(假设worldId是整数类型):
SpawnGroup[] spawnsGroup = spawnsByMapId[worldId]; // Error
但是,你可以通过
获得它的元素SpawnGroup spawnsGroup = spawnsByMapId[worldId];
答案 2 :(得分:-1)
使用Dictionary
解决了问题private Dictionary<int, List<SpawnGroup>> spawnsByMapId = new Dictionary<int, List<SpawnGroup>>();
现在我可以使用代码而不会出错:
List<SpawnGroup> mapSpawnGroups = spawnsByMapId[worldId]; // This works