c#在for语句中创建多个列表

时间:2017-12-03 12:49:58

标签: c#

有没有办法可以在" for"下创建多个列表?声明,带有一个实用的命名系统(例如monster1,monster2,monster3)。我已经在下标记了它,这是我想在代码中添加一个名字的地方。

需要生成的列表数量是先前定义的,我对此没有任何问题,但我得到了错误CS0128:一个名为`...&的本地变量#39;已在此范围内定义"如果我尝试根据带有内置计数器的变量分配列表名称来实现列表名称(在这种情况下为monsterList)。

我还有另一种方法可以做到这一点,所以不管我需要生成多少个列表,它都会创建它们并按照这个设置模式命名它们?

下面的代码是我想要迭代一次的事情(我是新的,所以它可能非常低效,我只是想让它干嘛我现在想要的东西!):

for (int monstCounter = 2; monstCounter < totalTimes; monstCounter++) 
          {
Console.WriteLine();
string monsterLists = "Monster " + monstCounter;
string monsterList = "monsters"+monstCounter;
Console.WriteLine(monsterLists);
    p = 0;
    foreach (Monster aMonster in monsters)
    {
      if (monsters[p].MonsterName == monsterLists)
      y = p;
      p++;
    }
    y = monsters[y].MonsterPopu;

    //Create a list of individuals.
    List<MonsterStatistics> **This is where I want an incrimental name** = new List<MonsterStatistics>();
      totalTimes1 = y;
      counter1 = 1;
        for (int b=0; b < totalTimes1; b++) 
          {

    // Add monsters to the list.
      monsterList.Add(new MonsterStatistics() {oldAge = rndNum.Next(1,100), name = "Name"+counter1, coupled = false, genderGen = rndNum.Next(0,2)}); 
    counter1++;
}  

foreach (MonsterStatistics aMonster in monsterList){
          if(aMonster.genderGen == 0)
          aMonster.gender = "Male";
          else if (aMonster.genderGen == 1)
          aMonster.gender = "Female";
          else 
          aMonster.gender = "Genderless";
aMonster.age = rndNum.Next(0,aMonster.oldAge);
Console.WriteLine(aMonster.name + " Age: " + aMonster.age + "/" + aMonster.oldAge + " " + aMonster.gender);
}
}

1 个答案:

答案 0 :(得分:2)

您无法从字符串创建变量,而不是变量在C#中的工作方式。

你可以使用一个词典并为每个怪物列出一个唯一的键(字符串),如:

Dictionary<string, List<MonsterStatistics>> monstersStatistics = new Dictionary<string, List<MonsterStatistics>>();

// Add a monster (here you can name monster with an incrementing variable)
monstersStatistics.Add("monster1", new List<MonsterStatistics>());
// Then fill the monster's statistics
monstersStatistics["monster1"].Add(new MonsterStatistics() { oldAge = rndNum.Next(1, 100), name = "Name" + counter1, coupled = false, genderGen = rndNum.Next(0, 2) });