前面我們學習了C#中的數據類型以及變量的聲明和賦值,今天我們繼續學習C#中的操作符和控制流語句。同時還要強調的是,文章只能給你一個大致的印象,因為要把這些內容完全講清楚需要大量篇幅,大家最好是能夠有一本相關參考書,對照書籍跟上節奏即可。
操作符
有了數據類型和變量,程序還需要對變量進行各種數學或邏輯運算,包括在數學中使用的加減乘除等運算,這些通過操作符來實現,這裡不對其進行一一介紹,常用操作符列表如下:
在實際使用時需要注意兩方面的問題:
• 優先級問題
在編程語言中也存在操作符優先級的問題,數學中乘除運算優先於加減運算的規則同樣適用,對於具有相同優先級的運算從左到右依次執行。盡管默認的優先級可以在一定程度上簡化代碼,但為了避免錯誤,還是建議適當使用括號增加代碼的可讀性。
參與運算的值或者變量叫作操作數,在運算前會先從左到右依次計算出各操作數,之後才進行運算。
• 短路求值問題
在以上操作符中,條件與、條件或、條件操作符以及空接合操作符支持短路求值。什麼是短路求值?舉一個例子:
int a=1;
int b=1;
bool c = ++a == 2 || ++b == 2;
在上面第三條語句中a自加1後為2,此時已經可以判斷該條件或操作(||)為真(有一個真則為真),那麼右邊的表達式就被忽略掉了,即b不會執行自加操作。最終a的值為2,b的值仍為1。
控制流語句
在實現了變量的運算後,程序要想實現各種功能,還需要通過一些具有固定格式的語句來控制程序的執行順序,稱之為控制流語句。這裡我們針對每種控制流語句給出一個例子:
• if語句
示例:
if(a==1)
{
b=1;
}
else if(a==2)
{
b=-1;
}
else
{
b=0;
}
解釋:當a的值等於1,則執行第一對大括號內的語句(代碼塊);否則繼續判斷,如果a的值等於2,則執行第二對大括號內的語句;如果以上都不成立,則執行最後一個代碼塊中的語句。需注意這裡的==相等判斷操作符萬不可寫成=賦值操作符。這裡的else if可以有多個或沒有,else以及else if也可都沒有。
• while語句
示例:
while(a<b)
{
a++;
}
解釋:while語句是一個循環語句,只要a<b成立就執行後面代碼塊中的語句,程序中每一次執行a的值都加1,最後直到a<b不成立停止循環。
• do while語句
示例:
do
{
a++;
}
while(a<b)
解釋:do while語句也是一個循環語句,與while不同的地方在於,代碼塊中的語句一定會先執行一次,之後再判斷a<b是否成立,如果成立繼續執行代碼塊中的語句。
• for語句
示例:
for(int i=1; i<=10; i++)
{
….
}
解釋:for語句也為循環語句,圓括號中第一個分號前為初始條件,第二個分號前為判斷條件,只要該條件成立,就執行後面代碼塊中的語句(這裡省略),第三個為每次循環後都需要執行的操作。
• foreach語句
示例:
foreach(char a in b)
{
System.Console.WriteLine(a);
}
解釋:這裡的b可為字符串或數組,該代碼將依次從字符串或數組中取出每一個字符或數組元素,取出的元素復制給a,然後執行代碼塊中的語句。foreach提供了一種對數組之類的數據進行遍歷的方法。以上示例中相當於將字符串b中的每個字符放在單獨的一行中輸出。
• continue語句
continue指示跳出當前循環,即忽略本次循環剩余的語句,開始下一次循環。比如:
foreach(char a in b)
{
if(a=='m')
{
continue;
}
System.Console.WriteLine(a);
}
解釋:以上代碼相當於依次輸出b中除m字符之外(如果有的話)的所有字符。
• switch語句
示例:
switch(a)
{
case 'a':
b=1;
break;
case 'b':
b=2;
break;
case 'c':
b=3;
break;
default:
b=0;
break;
}
解釋:根據a的值的不同,選擇運行不同的代碼。如果a值為字符a,那麼為b賦值為1,以此類推。如果條件都不滿足會執行default默認語句。
• break語句
在前面的例子中已經包含了break語句,遇到break語句將跳出代碼塊。break同樣也可用在循環語句中,此時遇到break將跳出循環(結束所有循環)。
以上就是C#中的操作符和控制流語句的基本概念和用法,下次我們將對C#中的方法進行學習。