解析在內(nèi)部循環(huán)中Continue外部循環(huán)的使用詳解
有時(shí)候你希望在一個(gè)嵌套循環(huán)的外層循環(huán)中執(zhí)行Continue操作。例如,假設(shè)你有一連串的標(biāo)準(zhǔn),和一堆items。
并且你希望找到一個(gè)符合每個(gè)標(biāo)準(zhǔn)的item。
match = null;
foreach(var item in items)
{
foreach(var criterion in criteria)
{
if (!criterion.IsMetBy(item)) //如果不符合標(biāo)準(zhǔn)
{
//那么說(shuō)明這個(gè)item肯定不是要查找的,那么應(yīng)該在外層循環(huán)執(zhí)行continue操作
}
}
match = item;
break;
}
有很多方法可以實(shí)現(xiàn)這個(gè)需求,這里有一些:
方法#1(丑陋的goto):使用goto語(yǔ)句。
match = null;
foreach(var item in items)
{
foreach(var criterion in criteria)
{
if (!criterion.IsMetBy(item))
{
goto OUTERCONTINUE;
}
}
match = item;
break;
OUTERCONTINUE:
}
如果不符合其中的一個(gè)標(biāo)準(zhǔn),那么goto OUTCONTINUE:,接著檢查下一個(gè)item。
方法#2(優(yōu)雅,漂亮):
當(dāng)你看到一個(gè)嵌套循環(huán),基本上你總是可以考慮將內(nèi)部的循環(huán)放到一個(gè)它自己的方法中:
match = null;
foreach(var item in items)
{
if (MeetsAllCriteria(item, critiera))
{
match = item;
break;
}
}
MeetsAllCriteria方法的內(nèi)部很明顯應(yīng)該是
foreach(var criterion in criteria)
if (!criterion.IsMetBy(item))
return false;
return true;
方法#3,使用標(biāo)志位:
match = null;
foreach(var item in items)
{
foreach(var criterion in criteria)
{
HasMatch=true;
if (!criterion.IsMetBy(item))
{
// No point in checking anything further; this is not
// a match. We want to “continue” the outer loop. How?
HasMatch=false;
break;
}
}
if(HasMatch) {
match = item;
break;
}
}
方法#4,使用Linq。
var matches = from item in items
where criteria.All(
criterion=>criterion.IsMetBy(item))
select item;
match = matches.FirstOrDefault();
對(duì)于在items中的每個(gè)item,都檢查是否滿(mǎn)足所有的標(biāo)準(zhǔn)。
相關(guān)文章
C#中的數(shù)組作為參數(shù)傳遞所引發(fā)的問(wèn)題
這篇文章主要介紹了C#中的數(shù)組作為參數(shù)傳遞所引發(fā)的問(wèn)題 的相關(guān)資料,需要的朋友可以參考下2016-03-03
C#?Random類(lèi)隨機(jī)函數(shù)實(shí)例詳解
這篇文章主要為大家介紹了C#?Random類(lèi)隨機(jī)函數(shù)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Unity實(shí)現(xiàn)ScrollView滑動(dòng)吸附功能
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)ScrollView滑動(dòng)吸附功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
C#.Net基于正則表達(dá)式抓取百度百家文章列表的方法示例
這篇文章主要介紹了C#.Net基于正則表達(dá)式抓取百度百家文章列表的方法,結(jié)合實(shí)例形式分析了C#獲取百度百家文章內(nèi)容及使用正則表達(dá)式匹配標(biāo)題、內(nèi)容、地址等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
C#使用OpenCvSharp4庫(kù)讀取電腦攝像頭數(shù)據(jù)并實(shí)時(shí)顯示
OpenCvSharp4庫(kù)是一個(gè)基于.Net封裝的OpenCV庫(kù),本文主要給大家介紹了C#使用OpenCvSharp4庫(kù)讀取電腦攝像頭數(shù)據(jù)并實(shí)時(shí)顯示的詳細(xì)方法,感興趣的朋友可以參考下2024-01-01

