2013-11-19 2 views
1

Привет, ребята, я хотел бы попросить у вас помощи о том, как преобразовать следующие коды 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 
     }  
    } 

} 

я хотел сделать цикл, который будет первым проверить на размер температуры, а затем hopefuly сделать еще один цикл, чтобы проверить, если _building_instance.BuildingID находится в списке. Затем запускает код, когда он получает совпадение.

Спасибо большое!

+1

Никто не хочет, чтобы пройти через весь ваш код. Опубликуйте только соответствующий код, желательно http://sscce.org/ – alfasin

+0

, пожалуйста, ознакомьтесь с упрощенным кодом. спасибо – user1998735

+0

@ user1998735, если все, что вы хотите сделать, это 'do this', почему даже использовать' if's? – atoMerz

ответ

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

Спасибо, сэр. Теперь он отлично работает. – user1998735

Смежные вопросы