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


85
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즉시 루프 에서 빠져 나가고 싶습니다 . 어떻게하나요?

답변:


208

사용 break.


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

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

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

Violated = (name.firstname == null);

나는 테스트와 부정이 필요하지 않다는 것을보고 싶지 않습니다.
John Grabauskas



9

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

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;
   }
}

0

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


MS 문서 break는 나가고 내 코드에서도 docs.microsoft.com/en-us/dotnet/csharp/language-reference/… continue 다음 반복으로 이동합니다.
Miro J.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.