我可以为两个不同的声明对象使用单个for循环吗?

时间:2016-05-04 06:46:25

标签: c# vb.net

 public void SetupShip()
    {
        ship1 = new Ship("Olympic Countess");
        ArrayList groupA = new ArrayList();
        for (int i = 0; i < 10; i++)
        {
            groupA.Add(new room(5000, "A" + (i + 1)));
        }
        ArrayList groupB = new ArrayList();
        for (int i = 0; i < 10; i++)
        {
            groupB.Add(new room(4000, "B" + (i + 1)));
        }
    }

如上所述,不是使用相同的条件来循环不同的对象,我可以在同一个循环中添加新的房间,因为循环条件是相同的。感谢。

2 个答案:

答案 0 :(得分:1)

我宁愿不使用过时的 ArrayList,而是List<room>; 如果您需要生成项目,请生成它们:

public void SetupShip() {
  ship1 = new Ship("Olympic Countess");

  List<room> groupA = Enumerable
    .Range(1, 9)
    .Select(i => new room(5000, "A" + i))
    .ToList();

  List<room> groupB = Enumerable
    .Range(1, 9)
    .Select(i => new room(4000, "B" + i))
    .ToList();
}

P.S。当然你可以在相同的循环中添加两个项目,即

for (int i = 0; i < 10; i++) {
  groupA.Add(new room(5000, "A" + (i + 1)));
  groupB.Add(new room(4000, "B" + (i + 1)));
}

但我建议不要这样做,但生成列表。

答案 1 :(得分:0)

它会起作用

public void SetupShip()
    {
        ship1 = new Ship("Olympic Countess");
        ArrayList groupA = new ArrayList();
        ArrayList groupB = new ArrayList();
        for (int i = 0; i < 10; i++)
        {
            groupA.Add(new room(5000, "A" + (i + 1)));
            groupB.Add(new room(4000, "B" + (i + 1)));
        }

    }