使用List<>时出错

时间:2016-11-22 08:51:57

标签: c#

我正在尝试使用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>>();

3 个答案:

答案 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