[英]How do I exit a foreach loop in C#?
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;
}
}
在測試期間,我發現 break 之后的 foreach 循環進入循環開始而不是循環之外。 因此,我將 foreach 更改為 for 並在這種情況下 break 正常工作 - 在 break 程序流程退出循環之后。
break;
- 退出 foreach
continue;
- 跳轉到下一個值
而不是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";
}
}
使用等效for
循環
bool Violated = false;
for (int i = 0; i < parent.names.Count && !Violated; i++)
{
var name = parent.names[i];
if name.lastname == null)
{
Violated = true;
this.message = "lastname reqd";
}
if (!Violated)
{
Violated = !(name.firstname == null) ? false : true;
if (ruleViolated)
this.message = "firstname reqd";
}
}
在條件i < parent.names.Count && !Violated
的情況下,您可以完全控制安全地停止循環,而不會出現任何break
或return
或任何粗暴地強制foreach
停止的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.