1. 什么是語句
語句是描述某個類型或讓程序執(zhí)行某個動作的源碼指令幔烛。
語句主要有3中類型:聲明語句藏姐,嵌入語句役首,便簽語句。
簡單語句由一個表示式和后面的分號組成蚓曼。
塊是一對大括號括起來的語句序列都许,可包含聲明語句千康,嵌入語句嫩痰,標簽語句,嵌套塊啄寡。
????????//簡單聲明
? ? ? ? ? ? int x = 10;
? ? ? ? ? ? int y;
? ? ? ? ? ? //嵌入式語句
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int z = 10;
? ? ? ? ? ? ? ? for (int i = 0; i < z; i++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? y += i;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
空語句豪硅,僅由一個分號組成
if (x < y)
????? ;
?else
? ? ? ?y++;
2. 表達式語句
表達式求值,被視為副作用挺物。將表達式右邊的值賦給左邊的變量懒浮。
3.控制流程語句
條件語句: if, if...else..., switch
循環(huán)語句: while, do , for , foreach
跳轉語句:break, continue, return, goto, throw
條件執(zhí)行和循環(huán)結構,除foreach外砚著,都需要一個測試表達式或條件以決定程序是否繼續(xù)執(zhí)行次伶。
4. if 語句
按條件執(zhí)行。
if (boolExpr)
? ? statement
5. if ...else...語句
if(boolExpr)
? ? Statement1
else
? ? statement2?
if ...else if...else 語句
6. while 語句
while循環(huán)是一種簡單的循環(huán)結構稽穆。
while(boolExpr)
? ? Statement
7. do 循環(huán)
do 循環(huán)是一種簡單循環(huán)結構冠王,其測試表達式在循環(huán)的底部執(zhí)行。
do
? ? statement
while(boolExpr);
循環(huán)體至少執(zhí)行一次舌镶,測試表示的關閉圓括號后需要一個分號
8. for循環(huán)
for( initizlizer;? Expr, IterationExpr)
? ? Statement
for語句中的變量的作用域柱彻,只在for語句內部可見。
初始化和迭代表示中的多表達式
初始化表達式和迭代表達式都可以包含多個表達式餐胀,逗號隔開哟楷。
????????????for(int i=0, j=10; i<5; i++,j+=10)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine($"{i}? {j}");
? ? ? ? ? ? }
輸出:
0 10
1? 20
2? 30
3? 40
4? 50
9. switch語句
實現(xiàn)多路分支。
switch語句由一個通常稱為測試表達式或匹配表達式的參數(shù)否灾。這些測試表達式必須是以下數(shù)據(jù)類型之一:char, string, bool, integer(int, byte, long等)卖擅,enum。C# 7.0中允許為任何類型墨技。
switch包含0個活多個分支塊惩阶。
每個分支塊都以一個或多個分支標簽開頭。
每個分支必須遵守“不穿透規(guī)則”,通常是break語句結束來實現(xiàn)達到終點扣汪。還可以使用return, goto, continue断楷, throw跳轉。
分支塊按照順序執(zhí)行私痹。
其它類型的模式表達式
case標簽由關鍵字case和其后的表達式模式構成
default 段不是必須的
分支標簽
C# 7.0之前必須是常量表達式,C# 7.0 之后可以是任意類型统刮。
10. 跳轉語句
當控制流程到達跳轉語句紊遵,程序執(zhí)行無條件的轉移到程序的另一部分。
break, continue, return, goto, throw
break 語句
可以用在 switch語句中外侥蒙,還可以用在for暗膜, foreach, while,? do 語句中。break 導致執(zhí)行跳出最內層封裝語句鞭衩。
????????????int x = 0;
? ? ? ? ? ? while(true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? x++;
? ? ? ? ? ? ? ? if (x > 3)
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? Console.WriteLine(x);
? ? ? ? ? ? }
continue語句
導致程序執(zhí)行轉到下列類型循環(huán)的最內層封裝語句的頂端学搜。 while, do, for , foreach
????????for(int x=0; x<5; x++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (x < 3)
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? Console.WriteLine($"Value is {x}");
? ? ? ? ? ? }
標簽語句
標簽語句由一個標識符后面跟著一個冒號,在跟一條語句組成论衍。
Identifier:Statement
允許控制代碼從代碼的其它部分轉移到該語句瑞佩; 只允許用在塊內部。
goto語句
無條件的控制轉移到一個標簽語句坯台。
goto? identifier
goto 語句必須在標簽語句作業(yè)域之內炬丸,可以跳到它所在塊內的任何標簽,或者跳到任何嵌套它的塊內標簽語句
不能跳入嵌套在其所在塊內部的任何塊。goto 語句會導致弱化結構稠炬,難以調試和維護焕阿,盡量不使用。
11. Using 語句
某些類的非托管對象有數(shù)量限制或者很耗系統(tǒng)資源首启,代碼在使用完暮屡,應盡快釋放它們。using語句由助于簡化該過程毅桃,并確保資源被適當?shù)奶幹谩?/p>
資源是指實現(xiàn)了System.IDisposable接口的類或結構褒纲。分配資源,使用資源疾嗅,處置資源外厂。
包裝資源的使用
using語句幫助減少意外的運行時錯誤帶來的潛在問題。using語句隱式產(chǎn)生處置該資源的代碼
using(Resource Indetifier = Exprssion) //分配資源
? ? statement //使用資源
using(TextWriter writer = File.CreateText("Test.txt"))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? writer.WriteLine("This is only test string....");
? ? ? ? ? ? }
? ? ? ? ? ? using(TextReader reader = File.OpenText("Test.txt"))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string getString ;
? ? ? ? ? ? ? ? while(null!= (getString = reader.ReadLine()))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Console.WriteLine(getString);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
多個資源和嵌套
using 語句可以用于相同類型的多個資源代承,資源聲明用逗號隔開汁蝶。
using(ResourceType Id1=Expr1, Id2=Expr2....) EmbededStatement
using語句的另一種形式,不推薦使用论悴,不確保用完資源后總調用Dispose方法
using( Expression) EmbededStatement
12. 其它語句
checked, uncheked 語句
foreach語句
try...throw...finally 異常處理語句
return 語句
yield語句