【问题标题】:translating if to for loop [closed]将if转换为for循环[关闭]
【发布时间】:2013-11-19 04:53:27
【问题描述】:

大家好,想请教您如何将以下 If/else 代码转换为 for 循环。 这是我的代码:

List<int> PrimeBuilders = new List<int>();
int Input;
void OnNextBuild()
{
    int Temp = PrimeBuilders.Count;

    if(Temp == 2)
    {
      if(Input == PrimeBuilders[0])
        {
            do this
        }

        else if(input == PrimeBuilders[1])
        {
             do this
        }           
    }       

    else if(Temp == 3)
    {
      if(Input == PrimeBuilders[0])
        {
            do this
        }

        else if(input == PrimeBuilders[1])
        {
             do this
        }

        else if(input == PrimeBuilders[2])
        {
             do this
        }           
    }
   if(Temp == 4)
    {
        if(Input == PrimeBuilders[0])
        {
            do this
        }

        else if(input == PrimeBuilders[1])
        {
             do this
        }   

        else if(input == PrimeBuilders[2])
        {
             do this
        }

        else if(input == PrimeBuilders[3])
        {
             do this
        }       
    }

}

我想创建一个 for 循环,首先检查 temp 的大小,然后希望再创建一个循环来检查 _building_instance.BuildingID 是否在列表中。然后在获得匹配项时运行代码。

非常感谢你们!

【问题讨论】:

  • 没有人愿意浏览你所有的代码。只贴相关代码,最好sscce.org
  • 请查看简化代码。谢谢
  • @user1998735 如果您只想使用do this 为什么还要使用ifs?

标签: c# if-statement for-loop


【解决方案1】:

目前尚不清楚您要做什么,但您的逻辑可以简化为:

void OnNextBuild()
{
  if (PrimeBuilders.Count < 2) return;
  int i = PrimeBuilders.IndexOf(_building_instance.BuildingID);

  if(i != -1)
  {
      if(++i == PrimeBuilders.Count) i = 0;
      _building_instance = _simulation_manager.
                            GetCity().
                            GetBuildingInstance(PrimeBuilders[i]);

      _interface_state_manager.SetNextState(InterfaceState.ShowBuildUnitsPanel);
  }
}

【讨论】:

  • 谢谢先生。现在可以正常使用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 2021-12-16
  • 2018-05-10
  • 1970-01-01
  • 2016-07-01
相关资源
最近更新 更多