有些游戲之中會有掛機(jī),在掛機(jī)的期間,由系統(tǒng)自動操控角色重復(fù)完成玩家指定的內(nèi)容。例如挖礦,系統(tǒng)就會一直重復(fù)發(fā)現(xiàn)礦,挖礦,沒有礦,停止挖礦這一系類操作。關(guān)于循環(huán)和重復(fù),今天就來學(xué)習(xí)一下 C# 語言中的循環(huán)語句。
一、while 循環(huán)
首先給出while 循環(huán)的語法格式:
while(condition){
statements;
}
只要 condition
的值判定為 true
,那么程序就會自動重復(fù)執(zhí)行 while
里面的語句;當(dāng) condition
的值判定為 false
,那么 while
就會停止循環(huán),直接執(zhí)行 while
之后的語句。
int count = 0;
int num = 0;
while(num <= 5){
count += num;
num += 1;
}
Console.WriteLine(count); // 15
二、for/foreach 循環(huán)
1、 for 循環(huán)
格式:
for(init; condition; increment){
statements;
}
for
循環(huán)后面的括號里面,需要定義三個內(nèi)容。
init
- 在循環(huán)開始后,第一個執(zhí)行的內(nèi)容,而且執(zhí)行一次。這一步可以聲明并初始化任何循環(huán)控制變量,也可以不在這里寫任何語句,但必須要有分號。condition
- 循環(huán)的判定條件。如果判定結(jié)果為true
,則執(zhí)行下面的statements
;否則,就結(jié)束了循環(huán),執(zhí)行循環(huán)體的下一個語句。increment
- 當(dāng)執(zhí)行完for
循環(huán)主體后,控制流會回到increment
語句并執(zhí)行。該語句也可以留空,只需要在條件部分的后面留下分號即可。
示例:
for(int i=0;i<5;i++){
Console.WriteLine(i);
}
/*
0
1
2
3
4
*/
2、foreach 循環(huán)
C# 是支持 foreach
循環(huán)語句的編程語言。foreach
循環(huán)可以用來迭代一個數(shù)組或者一個集合對象。例如:
int[] arr={1, 2, 3, 4, 5};
foreach(int elm in arr){
Console.WriteLine(elm);
}
/*
1
2
3
4
5
*/
// 類似于
for(int n=0;n<arr.Length;i++){
Console.WriteLine(arr[i]);
}
相比兩者,顯然用來迭代數(shù)組或者集合對象而言,foreach
循環(huán)實(shí)現(xiàn)更為方便;而 for
循環(huán)相對來說,理解起來比較簡單。至于怎么用,就看個人習(xí)慣和愛好了。
三、do...while 循環(huán)
格式:
do{
statements;
}while(condition);
do..while
和 while
語句有一些相似,但也有些不同。不同在于,while
只要不滿足條件,那么循環(huán)體內(nèi)的語句一次都不會執(zhí)行;而 do...whle
語句是無論你條件滿不滿足,都至少會執(zhí)行一次的。
int num = 10;
do{
num -= 1;
Console.WriteLine(num);
}while(num > 10);
// 9
從上面的程序來看,10是永遠(yuǎn)不可能比本身自己還大,所以這個條件判定恒為 false
,在 while
語句中是不會輸出任何東西;而在 do...while
語句中如結(jié)果可見,還是完成一次 do
語句中的程序。
四、嵌套循環(huán)
和判斷語句一樣,循環(huán)語句一樣是可以嵌套的。但循環(huán)語句有以上三類不同類型的循環(huán)語句,它們之間互相也是可以嵌套的。
for(int i=0;i<=5;i++){
while(i<4){
Console.WriteLine(i);
i+=1;
}
}
/*
0
1
2
3
*/
五、無限循環(huán)
無限循環(huán)又叫做死循環(huán),意思就是無休止、無窮止地循環(huán)下去。而造成無限循環(huán)的原因,就是因?yàn)檠h(huán)語句中的判斷條件的值恒為 true
,那么該循環(huán)體就會一直循環(huán)下去。
int num = 0;
while(num < 10){
Console.WriteLine(num);
}
// 無限打印 0
這個程序少了 num += 1
,所以 num
值是沒有改變的,一直都是 0。而且 0 永遠(yuǎn)比 10 小,所以這個條件就一直成立,結(jié)果就是無限循環(huán)打印 0.
六、循環(huán)控制語句
1、break
有時候,并不希望完全循環(huán)結(jié)束,而是獲得某個期望值,那么就可以結(jié)束這個循環(huán)語句。而用來終結(jié)循環(huán)語句,就需要使用到 break
關(guān)鍵字。
int num = 0;
while(num <= 5){
Console.WriteLine(num);
if(num == 3){
break;
}
num += 1;
}
/*
0
1
2
3
*/
可以看到,num 值等于 3 的時候,循環(huán)就已經(jīng)結(jié)束了。這就是因?yàn)?break
關(guān)鍵字在這起的作用,結(jié)束循環(huán)。
2、continue
另一個場景中,我們不是要所有的循環(huán)結(jié)果,比如在篩選產(chǎn)品的過程中,壞的自然就會被排除在外,而好的就保留下來。continue
關(guān)鍵字在循環(huán)體中就相當(dāng)于是排除的作用,到了不想要的內(nèi)容的時候,就自動跳過,直接執(zhí)行下一次循環(huán)。
for(int i=0;i<=3;i++){
if(i == 2){
continue;
}
Console.WriteLine(i);
}
/*
0
1
3
*/
從上面這個程序中可以看到結(jié)果只有 0 1 3,而 2 已經(jīng)被跳過去,排除在外。依我的理解而言,continue
就相當(dāng)于是篩選器,將滿足條件的內(nèi)容跳過,排除在外,留下的是所需要的內(nèi)容。
七、總結(jié)
以上就是今天關(guān)于 C# 語言中循環(huán)語句的學(xué)習(xí)記錄,下面做一個簡單的復(fù)述:
循環(huán)語句的類型:
- while 循環(huán):只要滿足條件,就可以執(zhí)行循環(huán)體中的語句;否則,就不執(zhí)行。
- for/foreach 循環(huán):for 循環(huán)和 while 循環(huán)類似,但 for 循環(huán)可以定義初始值和自增自減的值,當(dāng)然也可以不定義。foreach 循環(huán)在迭代數(shù)組和集合對象的時候,更為簡單便利。
- do...while 循環(huán):無論滿不滿足條件,do...while 至少會執(zhí)行一次內(nèi)容。
- 每個循環(huán)語句互相之間都可以嵌套使用。
無限循環(huán):即死循環(huán),當(dāng)循環(huán)條件結(jié)果恒為 true
,就會造成無限循環(huán)或者死循環(huán)。
循環(huán)控制語句:
- break - 用來結(jié)束循環(huán)的。
- continue - 用來跳過其本次循環(huán),直接進(jìn)行下一次循環(huán)。