2017-12-03 9 views
1

"for"ステートメントの下で複数のリストを作成する方法はありますか?例えば、monster1、monster2、monster3などです。私はの下にそれを示しました。これは、コードの中に有益な名前を入れたい場所です。c#forステートメント内に複数のリストを作成する

生成する必要があるリストの数は以前に定義されていますが、問題はありませんが、「エラーCS0128: `...という名前のローカル変数がこのスコープで既に定義されています"リスト名(この場合はmonsterList)を真似するために、inbuiltカウンタを変数に基づいてリスト名に代入しようとします。

私はこれを行うことができる別の方法があるので、生成する必要があるリストの数に関係なく、それらを作成し、この設定パターンに従って名前を付けます。

以下のコードは、私が新しいことを繰り返すことを望んでいるものです(私は新しいので、おそらくひどく非効率的です、私は今、私が今したいことをやろうとしています):

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); 
} 
} 
+2

:あなたはoは辞書を使用し、各モンスターは、一意のキー(文字列)をリストするために割り当てる、のようなものであるCAND何

あなたが望むように多くのリストを追加できますか? – zaitsman

答えて

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) }); 
関連する問題