繼續補習,這篇文章主要補習下控制流程程的相關語句及關鍵字,在C#中用於控制流程程的語句有:if、while、dowhile、switch、for、foreach、goto、break、continue,大多數都是我們日常開發所使用的,而這篇主要還是補習那些遺漏的知識。
以下是本文所要介紹的內容:
1、迴圈語句:for、foreach
2、switch中的break、return和goto
一、迴圈語句:for、foreach
迴圈語句是所有語言中都很常見的了,而下面記錄的分別是一個我不曾使用過的for迴圈和使用foreach我有時候會犯的一個錯誤:
1、一個我不曾使用過的for迴圈,一般常規的定義for迴圈代碼如下:
for(int i=0;i<count;i++){ //do something}
久而久之的使用過程中,我就習慣性的認為for迴圈當中只能包含一個參數,實則不然,for迴圈其實可以包含多個參數,並且可以實現一些特殊的判斷,只需要在多個參數之間加上“,”分隔,如下代碼:
for(int i=0,j=10;((i>5)&&(j<5));i++,j--){ //do something;}
當然中間用於邏輯判斷的也可以是或、異或,或者更複雜的判斷,雖然這種寫法不常見(至少我沒用到,或者我功力還太弱),但是在某些情況下還是應該比較有用的。
2、使用foreach我有時候會犯的一個錯誤,這個錯誤也是比較常見的,如下代碼:
DataRow row=new DataRow();foreach(var item in DataTable.Rows){ item=row;}
這個是個很典型的案例,就是foreach不允許在迴圈體內修改變數,如上面代碼中的row,如果按照以上代碼看一眼就能發現問題,但是實際開發過程中,有時候foreach中會有許多其他邏輯代碼,往往會把這個忽略掉,所以需要謹記。
二、switch中的break、return和goto
用過switch的朋友都知道,switch是用來替換多if語句情況下的一個解決方案,同時在switch中的case子句下必須編寫break關鍵字用來跳出,否則會出錯,當然解決方案也不止這一個,C#中還有2個關鍵字可以解決這個問題——return和goto,下面就說下這2個語句在switch中使用需要注意的情況:
1、return,return主要是用於返回,如果在switch中case子句裡使用return來代替break後,則switch後面的所有代碼都不會執行,將直接跳轉到方法的結束,所以使用起來需要慎之又慎。
2、goto,goto的話是一個很少見關鍵字,因為其使用會導致整個程式的錯亂、不可讀性甚至異常,同時C#文法中還規定了其不允許使用goto從一個方法跳轉到另外一個方法,所以一般來說能用盡量少用,而goto在switch中使用有個比較特色之處,如下代碼:
switch(A){ case 1: var b=1; goto default; case 2: var c=1; goto default; default: var d=1; break;}
對於在switch中需要無論哪種情況都走一下default的時候,可以使用goto語句來跳轉到default,實現了一簡單的代碼複用。