[c#] C #에서 foreach 루프를 어떻게 종료합니까?

foreach (var name in parent.names)
{
    if name.lastname == null)
    {
        Violated = true;
        this.message = "lastname reqd";
    }

    if (!Violated)
    {
        Violated = !(name.firstname == null) ? false : true;
        if (ruleViolated)
            this.message = "firstname reqd";
    }
}

위반이 사실이면 foreach즉시 루프 에서 빠져 나가고 싶습니다 . 어떻게하나요?



답변

사용 break.


귀하의 질문과 관련이 없지만 귀하의 코드에서 다음 줄을 봅니다.

Violated = !(name.firstname == null) ? false : true;

이 줄에서는 부울 값을 사용 (name.firstname == null)합니다. 그런 다음 !연산자를 적용합니다 . 그런 다음 값이 true이면 Violated를 false로 설정합니다. 그렇지 않으면 사실입니다. 따라서 기본적으로 Violated는 원래 표현식과 동일한 값으로 설정됩니다 (name.firstname == null). 다음과 같이 사용하지 마십시오.

Violated = (name.firstname == null);


답변

다음 문장을 사용하십시오.

break;


답변

break키워드를 사용하십시오 .


답변

이 코드를 보면 루프에서 빨리 빠져 나갈 수 있습니다!

foreach (var name in parent.names)
{
   if (name.lastname == null)
   {
      Violated = true;
      this.message = "lastname reqd";
      break;
   }
   else if (name.firstname == null)
   {
      Violated = true;
      this.message = "firstname reqd";
      break;
   }
}


답변

테스트 중에 중단 후 foreach 루프가 루프를 벗어나지 않고 루프가 시작되는 것으로 나타났습니다. 그래서 나는 foreach를 for로 바꾸고,이 경우에는 break가 올바르게 작동합니다. break 프로그램 흐름이 루프에서 나간 후에.


답변