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 프로그램 흐름이 루프에서 나간 후에.