我怎麼能去這樣做,所以如果「如果」聲明是真實的,跳過foreach循環下面的代碼,並與程序的其他部分去C# - 的foreach循環與if語句
void()
{
foreach()
{
if()
{
}
}
//code I want to skip if "if" statement is true
}
我怎麼能去這樣做,所以如果「如果」聲明是真實的,跳過foreach循環下面的代碼,並與程序的其他部分去C# - 的foreach循環與if語句
void()
{
foreach()
{
if()
{
}
}
//code I want to skip if "if" statement is true
}
有沒有辦法直接做你想做的(沒有「轉到」標籤 - !滅亡的思想),但你可以用「破發」的關鍵字,並設置可以參考後面的變量。
void()
{
var testWasTrue = false;
foreach()
{
if()
{
testWasTrue = true;
break; // break out of the "foreach"
}
}
if(!testWasTrue) {
//code I want to skip if "if" statement is true
}
}
不要打擾布爾值。做好工作,然後打破/返回。如果它是一個重要的代碼塊,則很容易爭論它應該是一個函數。看我下面的例子。 – dodexahedron
除了這與你的回答完全不同。 – McAden
因爲我們不知道他的邏輯,所以休息是無關緊要的。循環中可能存在需要針對所有項目執行的代碼。 – Jon
void()
{
bool skip = false;
foreach()
{
if()
{
skip = true;
}
}
if(!skip)
{
//code I want to skip if "if" statement is true
}
}
'break'關鍵字將跳出循環。
foreach (someClass a in someArray)
{
if(a.someProperty) // bool property
{
//Stuff to do if that condition is true
doSomethingElse();
//Calling the break keyword will stop the loop and jump immediately outside of it
break;
}
//Other code to run for each iteration of the loop
}
//Here is where execution will pick up either after break is called or after the loop finishes
只有我知道如何是一個布爾標誌。
void()
{
bool x = false;
foreach()
{
if()
{
x = true;
break;
}
}
if(!x)
{
//Code to skip if "if" statement is true.
}
}
不是超優雅,但容易。 編輯:12秒擊敗:)
不需要布爾值。做好工作然後再打破。 – dodexahedron
void()
{
bool process = true;
foreach()
{
if()
{
process = false;
break;
}
}
if (process)
{
//code I want to skip if "if" statement is true
}
}
正如我在評論中提及您可以通過額外的bool變量做到這一點。
void()
{
bool positiveResult; // by default it gets false value
foreach()
{
if()
{
positiveResult = true;
// you may use "break" to skip the loop
break;
}
}
if(!positiveResult )
{
//code I want to skip if "if" statement is true
}
}
無需遍歷整個集合。儘快休息或返回。另外,nix布爾值。根本不需要這個。 – dodexahedron
我知道這已經回答了,但我想我會在我的2美分扔,因爲沒有人認爲抽象的檢查,以一個單獨的方法:
void()
{
if (ShouldDoStuff(myCollection))
DoStuff(myCollection);
else
DoOtherStuff(myCollection);
}
private bool ShouldDoStuff(collection)
{
foreach()
{
if()
return true;
}
return false;
}
這在提供更清潔的代碼處理你的算法的更高水平,並消除討論的所有混亂。它清楚地分離了檢查和執行動作的void()
中的任務,讀者立即知道程序流程的確切內容,而無需通過布爾邏輯或中斷邏輯來辨別他們正在做什麼。沒有一種方法有超過1個責任或任務。
是的,這可能是海報想要在他們的foreach做其他工作,但這是一個完全不同的討論,而不是他們的問題中描述的。如果您只是想檢查給定集合(或對象)是否滿足特定條件,則可以將該檢查移至單獨的方法。即使將所有三個組件的自動化單元測試都打開了。
即使DoStuff
和DoOtherStuff
不是抽象到他們自己的方法,它提供更好的可讀性和邏輯流。
繼續關鍵詞來救援。如果你想跳出for循環,你可以使用'Break'。 – AlwaysAProgrammer
太多的問題是不明確的。 Yogendra的評論可能取決於你的意思 – McAden
你必須在if語句塊中聲明bool,並在你想跳過的區域使用它 –