你需要像continue
關鍵字功能 - 你考慮過使用continue
關鍵字,然後呢?
更新:您的示例代碼很難破譯的意圖。
for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++)
{
// If name is not Alan, increment i.
}
for
loop有三個部分,用兩個分號隔開。第一部分初始化循環變量。第二部分是每次迭代即將開始時評估的表達式;如果它是假的,則循環終止。第三部分在每次迭代後執行。
因此,上面的循環將在遇到的第一個「Alan」時退出,並且每次完成迭代時它都會增加i
。最後,如果沒有Alans,它將執行最後一次i
等於Collection.Count
,這比集合中的最大有效索引大一個。因此,當你嘗試訪問Collection[i]
時i
超出範圍,它肯定會拋出異常。
也許你想這樣的:
foreach (var item in Collection.Where(i => i.Name != "Alan"))
{
// item is not an "Alan"
}
你可以認爲Where
擴展方法篩選集合的方式。
如果這看起來不起眼,就可以實現與continue
關鍵字一樣的東西(如你猜):
foreach (var item in Collection)
{
if (item.Name == "Alan")
continue;
// item is not an "Alan"
}
或者你可以把代碼中的if
的塊:
foreach (var item in Collection)
{
if (item.Name != "Alan")
{
// item is not an "Alan"
}
}
示例代碼將是一個很大的幫助。我不知道你的意思是「如果語句評估爲false」,如果發生這種情況,那麼內部的東西不會被執行,並且循環會像平常一樣繼續。 – DisgruntledGoat 2009-10-06 22:37:08
提供示例代碼。 – abelenky 2009-10-06 22:40:41