表達(dá)式搪花、語(yǔ)句

表達(dá)式

表達(dá)式由操作數(shù) (operand) 和運(yùn)算符 (operator) 構(gòu)成遏片。表達(dá)式的運(yùn)算符指示對(duì)操作數(shù)適用什么樣的運(yùn)算。運(yùn)算符的示例包括+撮竿、-吮便、* 、/ 和 new幢踏。操作數(shù)的示例包括文本髓需、字段、局部變量和表達(dá)式房蝉。

當(dāng)表達(dá)式包含多個(gè)運(yùn)算符時(shí)僚匆,運(yùn)算符的優(yōu)先級(jí) (precedence) 控制各運(yùn)算符的計(jì)算順序。例如搭幻,表達(dá)式 x + y * z 按 x + (y * z) 計(jì)算咧擂,因?yàn)?* 運(yùn)算符的優(yōu)先級(jí)高于 + 運(yùn)算符。

語(yǔ)句

語(yǔ)句是程序的主體檀蹋,一般程序都是有很多個(gè)語(yǔ)句組成的松申,C#中的語(yǔ)句主要分為以下幾種:

聲明語(yǔ)句 (declaration statement)?用于聲明局部變量和常量。

表達(dá)式語(yǔ)句 (expression statement)?用于對(duì)表達(dá)式求值续扔」ネ危可用作語(yǔ)句的表達(dá)式包括方法調(diào)用、使用 new 運(yùn)算符的對(duì)象分配纱昧、使用 = 和復(fù)合賦值運(yùn)算符的賦值刨啸、使用 ++ 和 -- 運(yùn)算符的增量和減量運(yùn)算以及 await 表達(dá)式。

選擇語(yǔ)句 (selection statement)?用于根據(jù)表達(dá)式的值從若干個(gè)給定的語(yǔ)句中選擇一個(gè)來執(zhí)行识脆。這一組中有 if 和 switch 語(yǔ)句设联。

迭代語(yǔ)句 (iteration statement)?用于重復(fù)執(zhí)行嵌入語(yǔ)句善已。這一組中有 while、do离例、for 和 foreach 語(yǔ)句换团。

跳轉(zhuǎn)語(yǔ)句 (jump statement)?用于轉(zhuǎn)移控制。這一組中有 break宫蛆、continue艘包、goto、throw耀盗、return 和 yield 語(yǔ)句想虎。

try...catch語(yǔ)句?用于捕獲在塊的執(zhí)行期間發(fā)生的異常,try...finally 語(yǔ)句用于指定終止代碼叛拷,不管是否發(fā)生異常舌厨,該代碼都始終要執(zhí)行。

checked 語(yǔ)句和 unchecked 語(yǔ)句?用于控制整型算術(shù)運(yùn)算和轉(zhuǎn)換的溢出檢查上下文忿薇。

lock 語(yǔ)句?用于獲取某個(gè)給定對(duì)象的互斥鎖裙椭,執(zhí)行一個(gè)語(yǔ)句,然后釋放該鎖署浩。

using 語(yǔ)句?用于獲得一個(gè)資源揉燃,執(zhí)行一個(gè)語(yǔ)句,然后釋放該資源瑰抵。

聲明語(yǔ)句

聲明語(yǔ)句的主要的作用就是聲明一個(gè)變量你雌,在C#中主要的聲明方法如下:

intx=1;//聲明整型變量doublex=1.0;//聲明雙精度變量int[]array={1,2,3};//聲明數(shù)組變量int[]array=newint[4]{1,2,3,4};//聲明數(shù)組變量string s="abcd";//聲明字符串變量var x=10;//這個(gè)是讓編譯器自己去判斷x是什么類型的變量enumcolor//聲明枚舉變量{red,blue,green};constinta=10;//聲明常量

表達(dá)式語(yǔ)句

在C#中像x+y;和100;這樣的表達(dá)式是不允許存在的二汛,因?yàn)闆]有意義婿崭,但是C語(yǔ)言是可以存在的,雖然也沒有意義

選擇語(yǔ)句

這里主要看Switch語(yǔ)句肴颊,它的主要結(jié)構(gòu)是:

switch(表達(dá)式){case常量標(biāo)簽1:語(yǔ)句塊1氓栈;break;case常量標(biāo)簽2:語(yǔ)句塊2;break;case常量標(biāo)簽3:語(yǔ)句塊3婿着;break;default:break;}

首先看括號(hào)里的表達(dá)式授瘦,它的要求是得到的結(jié)果必須是以下類型:

sbyte、byte竟宋、short提完、ushort、int丘侠、uint徒欣、long、ulong蜗字、bool打肝、char脂新、string 或

enum-type

注意,這里面沒有浮點(diǎn)數(shù)粗梭,所以這里表達(dá)式的結(jié)果必須是整數(shù)争便,布爾,字符断医,字符串滞乙,枚舉類型**

下面看這些常量標(biāo)簽,這些標(biāo)簽要跟之前的表達(dá)式的值想對(duì)應(yīng)鉴嗤,比如表達(dá)式的結(jié)果是布爾類型酷宵,那么這些標(biāo)簽常量也要是布爾類型的

迭代語(yǔ)句

迭代語(yǔ)句主要就是用于循環(huán)使用,其中for循環(huán)和while循環(huán)和C語(yǔ)言差不多躬窜,這里主要講一下foreach,其結(jié)構(gòu)如下:

foreach (var item in collection) { 語(yǔ)句塊炕置; }

這個(gè)語(yǔ)句的意思是荣挨,用item去訪問collection里的元素,每訪問到一個(gè)就執(zhí)行一次語(yǔ)句塊朴摊,注意這個(gè)collection必須是個(gè)集合

什么樣的集合是可以使用foreach語(yǔ)句進(jìn)行迭代的呢默垄?

如果說一個(gè)集合它具有IEnumerable這個(gè)接口,那么他就可以使用foeeach語(yǔ)句進(jìn)行迭代

比如:


注:圈起來的冒號(hào)后面表示這個(gè)類的基類和基接口

下面講講foreach語(yǔ)句的原理甚纲,首先看看迭代器IEnumerator的使用

image.png

class Program{staticvoidMain(string[]args){int[]myArray=newint[]{1,2,3,4,5,6};IEnumerator Enumerable=myArray.GetEnumerator();//由于IEnumerable是數(shù)組的基接口口锭,所以這個(gè)接口的方法,數(shù)組也可以使用while(Enumerable.MoveNext()){Console.WriteLine(Enumerable.Current);}}}

所以foreach語(yǔ)句的本質(zhì)就是對(duì)這種使用迭代器對(duì)集合遍歷的方法的簡(jiǎn)記法

try...catch語(yǔ)句

這語(yǔ)句是為了防止出現(xiàn)異常介杆,將要可能會(huì)出現(xiàn)異常的代碼塊放大try中鹃操,如果出現(xiàn)了異常,將會(huì)進(jìn)入到catch語(yǔ)句中春哨,對(duì)于異常往往會(huì)不止一種荆隘。比如int里有一個(gè)Parse方法,使用這個(gè)方法是將字符串解析成相應(yīng)格式的值赴背,但是使用過程中就可能出現(xiàn)輸入的字符串為空椰拒,和不能轉(zhuǎn)成整型的字符,或者大于整型的最大值凰荚,這幾種情況燃观,這個(gè)時(shí)候就會(huì)出現(xiàn)異常

image.png

所以這個(gè)時(shí)候catch的分支可能就不止一個(gè),但是它只能執(zhí)行一個(gè)便瑟,因?yàn)檫\(yùn)行try時(shí)在某個(gè)時(shí)刻出現(xiàn)了一個(gè)異常就直接跳到相應(yīng)的catch分支里了缆毁,當(dāng)然也可以只用一個(gè)分支這樣無論是哪種異常都會(huì)進(jìn)入這個(gè)分支里

staticvoidMain(string[]args){string s;s=Console.ReadLine();if(s=="null"){s=null;}try{intx;x=int.Parse(s);x++;Console.WriteLine(x);}catch(ArgumentNullException)//這個(gè)括號(hào)里寫的就是異常的名稱,也可以不寫胳徽,不寫就是有異常就會(huì)到這個(gè)分支來{Console.WriteLine("The exception is ArgumentNullException!");}catch(FormatException){Console.WriteLine("The exception is FormatException!");}catch(OverflowException){Console.WriteLine("The exception is OverflowException!");}}

運(yùn)行結(jié)果如下:

image.png

對(duì)于try·····catch語(yǔ)句還可以加個(gè)finally分支在最后积锅,這個(gè)分支是不管有沒有異常都會(huì)進(jìn)行的

checked 語(yǔ)句和 unchecked 語(yǔ)句

這語(yǔ)句主要就是檢查checked語(yǔ)句所包含的代碼塊是否有溢出爽彤,默認(rèn)情況所寫的代碼都是處于unchecked語(yǔ)句里的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缚陷,隨后出現(xiàn)的幾起案子适篙,更是在濱河造成了極大的恐慌,老刑警劉巖箫爷,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚷节,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡虎锚,警方通過查閱死者的電腦和手機(jī)硫痰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窜护,“玉大人效斑,你說我怎么就攤上這事≈悖” “怎么了缓屠?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)护侮。 經(jīng)常有香客問我敌完,道長(zhǎng),這世上最難降的妖魔是什么羊初? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任滨溉,我火速辦了婚禮,結(jié)果婚禮上长赞,老公的妹妹穿的比我還像新娘晦攒。我一直安慰自己,他們只是感情好涧卵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布勤家。 她就那樣靜靜地躺著,像睡著了一般柳恐。 火紅的嫁衣襯著肌膚如雪伐脖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天乐设,我揣著相機(jī)與錄音讼庇,去河邊找鬼。 笑死近尚,一個(gè)胖子當(dāng)著我的面吹牛蠕啄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歼跟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼和媳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哈街,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤留瞳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后骚秦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體她倘,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年作箍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硬梁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胞得,死狀恐怖荧止,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阶剑,我是刑警寧澤罩息,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站个扰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏葱色。R本人自食惡果不足惜递宅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苍狰。 院中可真熱鬧办龄,春花似錦、人聲如沸淋昭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翔忽。三九已至英融,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歇式,已是汗流浹背驶悟。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留材失,地道東北人痕鳍。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笼呆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子熊响,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容