Возврат к предыдущему циклу?

#c# #for-loop #foreach

#c# #for-цикл #foreach

Вопрос:

Как я вернусь к другому циклу?

  for (int index = MIN_DIAGNOSIS; index <= MAX_DIAGNOSIS; index  ) 
   {
       foreach (RepeaterItem ri1 in GeneralRepeater.Items)
       {
           int iItemIndex = ri1.ItemIndex;
           var myDDL = GeneralRepeater.Items[iItemIndex].FindControl("derp");
           MyPoc.Diagnoses.Diagnoses[index] = new PatientDiagnosis(/*snip*/);
           return index; 
           //error 'PatientPlanOfCare.cmdSave_Click(object, System.EventArgs)' 
           //returns void, a return keyword must not be followed by 
           //an object expression
      }
    }
    break;
  

Комментарии:

1. Ваш код не имеет никакого смысла. Что вы хотите сделать?

2. Довольно неясно, что вам нужно. Пожалуйста, прочтите tinyurl.com/so-hints и соответствующим образом отредактируйте свой вопрос.

3. break; инструкция во внутреннем цикле приведет к его прерыванию и возврату к итерации внешнего цикла.

4. Да, ваш код не имеет смысла. Вы должны создать очень простой пример, который иллюстрирует вашу проблему, и вставить его вместо вашего фактического кода. Кроме того, если это соответствует вашему вопросу без полос прокрутки, у вас больше шансов получить помощь.

5. Почему бы вам не перефразировать свой вопрос в терминах того, чего вы хотите достичь своим кодом, вместо того, чтобы задавать вопросы о реализации. Похоже, здесь есть некоторая путаница.

Ответ №1:

Просто разорвите внутренний цикл и используйте нужную переменную в главном цикле.

 for (int index = PocDiagnoses.MIN_DIAGNOSIS; index <= PocDiagnoses.MAX_DIAGNOSIS; index  ) 
{
    foreach (RepeaterItem ri1 in GeneralRepeater.Items)
    {
        int iItemIndex = ri1.ItemIndex;
        DropDownList myDDL = (DropDownList)GeneralRepeater.Items[iItemIndex].FindControl("GeneralDDL");
        MyPoc.Diagnoses.Diagnoses[index] = new PatientDiagnosis(myDDL.SelectedValue, new SynergyOnSetDate(new System.DateTime(Year, Month, Day)), "01/02/2011");
        break;
    }

    // Check the index variable here.
}
  

Комментарии:

1. Нет особого смысла использовать внутренний цикл, если вы прерываетесь после первой итерации без условия…

Ответ №2:

Как и то, что было прокомментировано, трудно сказать, что вы пытаетесь сделать. Согласно сообщению об ошибке в ваших комментариях, этот код выполняется в методе, который возвращает void , что означает, что ваш return оператор не должен иметь index после него.