第2章數(shù)據(jù)類型與流程控制_第1頁
第2章數(shù)據(jù)類型與流程控制_第2頁
第2章數(shù)據(jù)類型與流程控制_第3頁
第2章數(shù)據(jù)類型與流程控制_第4頁
第2章數(shù)據(jù)類型與流程控制_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 1第2章 數(shù)據(jù)類型與流程控制2.1 2.1 數(shù)據(jù)類型數(shù)據(jù)類型2.2 2.2 不同數(shù)據(jù)類型之間的轉(zhuǎn)換不同數(shù)據(jù)類型之間的轉(zhuǎn)換2.3 2.3 常量與變量常量與變量2.4 2.4 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式2.5 2.5 控制臺應(yīng)用程序與格式化輸出控制臺應(yīng)用程序與格式化輸出2.6 2.6 C#C#流程控制語句流程控制語句2 22.1 數(shù)據(jù)類型uC#C#數(shù)據(jù)類型分為兩類:值類型和引用類型。數(shù)據(jù)類型分為兩類:值類型和引用類型。 值類型值類型:值類型變量直接保存變量的值值類型變量直接保存變量的值 包括簡單類型、枚舉類型、結(jié)構(gòu)類型、可空類型。包括簡單類型、枚舉類型、結(jié)構(gòu)類型、可空類型。 引用類型引用類型

2、:引用類型變量保存的是數(shù)據(jù)的引用地引用類型變量保存的是數(shù)據(jù)的引用地址。址。 包括類、接口、數(shù)組、委托。包括類、接口、數(shù)組、委托。 一般把引用類型的變量稱為對象。一般把引用類型的變量稱為對象。3 3類型一覽表類型一覽表 類類 別別 描描 述述值類型值類型簡單類型簡單類型有符號整型:有符號整型:sbyte,short,int,longsbyte,short,int,long無符號整型:無符號整型:byte,ushort,uint,ulongbyte,ushort,uint,ulongUnicodeUnicode字符:字符:charcharIEEEIEEE浮點(diǎn)型:浮點(diǎn)型:float,doublefl

3、oat,double高精度小數(shù):高精度小數(shù):decimaldecimal布爾型:布爾型:boolbool枚舉類型枚舉類型用戶自定義類型用戶自定義類型enumenum E E結(jié)構(gòu)類型結(jié)構(gòu)類型用戶自定義類型用戶自定義類型struct Sstruct S引用類型引用類型類類型類類型所有其他類型的最終基類:所有其他類型的最終基類:objectobjectUnicodeUnicode字符串:字符串:stringstring用戶自定義類型用戶自定義類型class Cclass C接口類型接口類型用戶自定義類型用戶自定義類型interface Iinterface I數(shù)組類型數(shù)組類型單維與多維數(shù)組,例如,單

4、維與多維數(shù)組,例如,intint與與int,int,委托類型委托類型用戶自定義類型用戶自定義類型delegate T D()delegate T D()4 4值類型與引用類型區(qū)別 12345H堆棧(stack)堆(heap)56ijCHI實(shí)際數(shù)據(jù)12345H地址objobj5 5值類型和引用類型的區(qū)別 特性特性值類型值類型引用類型引用類型變量中保存的內(nèi)容變量中保存的內(nèi)容實(shí)際數(shù)據(jù)實(shí)際數(shù)據(jù)指向?qū)嶋H數(shù)據(jù)的引用指針指向?qū)嶋H數(shù)據(jù)的引用指針內(nèi)存空間配置內(nèi)存空間配置堆棧(堆棧(StackStack)受管制的堆(受管制的堆(Managed HeaManaged Heap p)內(nèi)存需求內(nèi)存需求較少較少較多較多執(zhí)

5、行效率執(zhí)行效率較快較快較慢較慢內(nèi)存釋放時(shí)間點(diǎn)內(nèi)存釋放時(shí)間點(diǎn)執(zhí)行超過定義變量執(zhí)行超過定義變量的作用域時(shí)的作用域時(shí)由垃圾回收機(jī)制負(fù)責(zé)回收由垃圾回收機(jī)制負(fù)責(zé)回收可以為可以為nullnull不可以不可以可以可以6 62.1.2 整型 uC#C#提供了八種整型(即計(jì)算機(jī)組成原理中的提供了八種整型(即計(jì)算機(jī)組成原理中的“定點(diǎn)數(shù)定點(diǎn)數(shù)”):): sbytesbyte:1 1字節(jié)有符號字節(jié)有符號 bytebyte: 1 1字節(jié)無符號字節(jié)無符號 shortshort: 2 2字節(jié)有符號字節(jié)有符號 ushortushort:2 2字節(jié)無符號字節(jié)無符號 intint: 4 4字節(jié)有符號,最常用字節(jié)有符號,最常用 u

6、intuint: 4 4字節(jié)無符號字節(jié)無符號 longlong: 8 8字節(jié)有符號字節(jié)有符號 ulongulong:8 8 字節(jié)無符號字節(jié)無符號各類型表示的數(shù)據(jù)類型見表各類型表示的數(shù)據(jù)類型見表2-32-37 72.1.3 浮點(diǎn)類型 floatfloat: 4 4字節(jié)浮點(diǎn)數(shù),常用。例如:字節(jié)浮點(diǎn)數(shù),常用。例如:35.0f35.0fdoubledouble: 8 8字節(jié)浮點(diǎn)數(shù),常用。例如:字節(jié)浮點(diǎn)數(shù),常用。例如:2.7E+232.7E+23decimaldecimal:1616字節(jié)浮點(diǎn)數(shù),特殊的浮點(diǎn)數(shù),精度高字節(jié)浮點(diǎn)數(shù),特殊的浮點(diǎn)數(shù),精度高 適用于金融、貨幣等需要高精度數(shù)值的領(lǐng)域。適用于金融、貨幣

7、等需要高精度數(shù)值的領(lǐng)域。 其類型指定符為其類型指定符為M M(或(或m m)。)。 例如:例如: decimal y = 9999999999999999999999999m; decimal y = 9999999999999999999999999m; floatfloat和和doubledouble的浮點(diǎn)數(shù)格式與計(jì)算機(jī)組成原理介紹的的浮點(diǎn)數(shù)格式與計(jì)算機(jī)組成原理介紹的IEEE754 IEEE754 規(guī)定的格式相同規(guī)定的格式相同 各類型表示的數(shù)據(jù)類型見表各類型表示的數(shù)據(jù)類型見表2-42-48 82.1.4 布爾型 u 用用boolbool表示,表示,boolbool類型只有兩個(gè)值類型只有兩個(gè)

8、值truetrue和和falsefalse。 例如:例如: bool isExist = false;bool isExist = false; bool b = (i0 & i0 & i-intint類型類型 public static int Parse(string)。 如果 string 為空,則拋出 ArgumentNullException 異常; 如果 string 格式不正確,則拋出 FormatException 異常; 如果 string 的值小于 MinValue 或大于 MaxValue 的數(shù)字,則拋出 OverflowException 異常。 string stri

9、ngType = 12345; int intType = (int)stringType; /錯(cuò)誤,string 類型不能直接轉(zhuǎn)換為 int 類型 int intType = Int32.Parse(stringType); /正確,123451414u 顯式轉(zhuǎn)換顯式轉(zhuǎn)換4 4 使用使用TryParseTryParse()()方法方法實(shí)現(xiàn)值類型之間的轉(zhuǎn)換實(shí)現(xiàn)值類型之間的轉(zhuǎn)換。Int32.TryParse()不拋異常,會返回true或false來說明解析是否成功,如果解析錯(cuò)誤,調(diào)用方將會得到0值。例如:字符串例如:字符串-intint類型類型int i;string str=123456;In

10、t32.TryParse(str,out i);/將str的值強(qiáng)制轉(zhuǎn)換成數(shù)字,并賦給 iu toStringtoString()()轉(zhuǎn)換轉(zhuǎn)換 當(dāng)把值類型轉(zhuǎn)換成字符串類型時(shí),可以直接調(diào)用值類型的方法toString()進(jìn)行轉(zhuǎn)換,另外toString還可以將結(jié)果轉(zhuǎn)換成相應(yīng)的進(jìn)制形式. /轉(zhuǎn)換為十六進(jìn)制形式(X可以換為小寫,代表對應(yīng)的a-f的大小寫) int a = 256; string b =a.ToString(X); 15152.2.2 值類型與object類型之間的轉(zhuǎn)換-裝箱與拆箱u C#C#的類型系統(tǒng)是統(tǒng)一的,這樣任何類型的值都能夠被處理成的類型系統(tǒng)是統(tǒng)一的,這樣任何類型的值都能夠被處理

11、成對象。對象。u C#C#中每一個(gè)類型直接或者間接從中每一個(gè)類型直接或者間接從objectobject類繼承而來,并且類繼承而來,并且obobjectject是所有類型最終的基類。是所有類型最終的基類。u ObjectObject類型:類型:SystemSystem命名空間下有一個(gè)命名空間下有一個(gè)ObjectObject類,該類是,類,該類是,所有其他引用類型的基類。所有其他引用類型的基類。u 考察:考察:String s=(10).ToString();String s=(10).ToString(); C# C#如何調(diào)用數(shù)值如何調(diào)用數(shù)值1010上的方法上的方法ToString()? ToS

12、tring()? 【值類型與object類型之間的轉(zhuǎn)換】值類型與object類型之間的轉(zhuǎn)換,可以使用裝箱與拆箱技術(shù)實(shí)現(xiàn)。1616u裝箱裝箱(boxing)(boxing):將值類型轉(zhuǎn)換為:將值類型轉(zhuǎn)換為objectobject類型類型 int i=5;int i=5; object o = i; / object o = i; /含義:在堆棧中創(chuàng)建一個(gè)對象含義:在堆棧中創(chuàng)建一個(gè)對象o o,該,該對象引用了堆(對象引用了堆(heapheap)上)上intint類型的數(shù)值,而該數(shù)值是賦給類型的數(shù)值,而該數(shù)值是賦給變量變量i i的數(shù)值的備份。的數(shù)值的備份。o o xxxxH堆棧堆5i5xxxxH17

13、17u拆箱(拆箱(unboxingunboxing):將):將objectobject類型轉(zhuǎn)換為值類型類型轉(zhuǎn)換為值類型 int k = (int)o;int k = (int)o;uusing System;using System;class Testclass Test static void Main() static void Main() int i=123; int i=123; object o=i; object o=i; / /裝箱裝箱 int j=(int)o; int j=(int)o; / /取消裝箱取消裝箱,拆箱拆箱 1818引用類型的顯式類型轉(zhuǎn)換 as運(yùn)算符用于執(zhí)行

14、引用類型的顯式類型轉(zhuǎn)換。 如果要轉(zhuǎn)換的類型和指定的類型兼容,轉(zhuǎn)換就會成功進(jìn)行;如果類型不兼容,as運(yùn)算符就會返回值null。 舉例如下:object obj1=a string;object obj2=5;string str1= obj1 as string;/ str1=a string;string str2= obj2 as string;/str2=null; 注:as運(yùn)算符允許在一步中進(jìn)行安全的類型轉(zhuǎn)換,不需要先使用is運(yùn)算符測試類型,再執(zhí)行轉(zhuǎn)換。19192.3 常量和變量C#C#中提供中提供2 2種類型的常量:種類型的常量:uconstconst關(guān)鍵字關(guān)鍵字: :靜態(tài)常量(靜態(tài)常

15、量(Compile-time constantCompile-time constant) constconst常量是在編譯時(shí)設(shè)置其值并且永遠(yuǎn)不能更改其值的字段,常量是在編譯時(shí)設(shè)置其值并且永遠(yuǎn)不能更改其值的字段,在對程序進(jìn)行編譯的時(shí)候,編譯器會把所有在對程序進(jìn)行編譯的時(shí)候,編譯器會把所有constconst常量全部替常量全部替換為常數(shù)。換為常數(shù)。u使用使用readonlyreadonly關(guān)鍵字關(guān)鍵字: :動態(tài)常量(動態(tài)常量(Runtime constantRuntime constant) 在程序運(yùn)行期間只能初始化在程序運(yùn)行期間只能初始化“一次一次”的字段,可以在聲明語的字段,可以在聲明語句中

16、初始化該字段,也可以在構(gòu)造函數(shù)中初始化該字段。初句中初始化該字段,也可以在構(gòu)造函數(shù)中初始化該字段。初始化以后,用始化以后,用readonlyreadonly聲明的字段的值就不能再更改。聲明的字段的值就不能再更改。二者區(qū)別:二者區(qū)別:u readonlyreadonly常量運(yùn)行時(shí)初始化,常量運(yùn)行時(shí)初始化,constconst常量編譯時(shí)初始化。常量編譯時(shí)初始化。u constconst常量只能在聲明中賦值,常量只能在聲明中賦值,readonlyreadonly常量既可以在聲明中賦常量既可以在聲明中賦值,也可以在構(gòu)造函數(shù)中賦值。值,也可以在構(gòu)造函數(shù)中賦值。2020示例示例public const i

17、nt MAX_VALUE = 10;public const int MAX_VALUE = 10;示例示例public readonly int MAX_VALUE = 10;public readonly int MAX_VALUE = 10;2121變量 變量用來表示一個(gè)數(shù)值、一個(gè)字符串值或者一個(gè)類的對象。變量用來表示一個(gè)數(shù)值、一個(gè)字符串值或者一個(gè)類的對象。變量存儲的值可能會發(fā)生更改,但變量名稱保持不變。變量存儲的值可能會發(fā)生更改,但變量名稱保持不變。 C#C#是大小寫敏感的是大小寫敏感的,即大寫和小寫字母認(rèn)為是不同的字母。,即大寫和小寫字母認(rèn)為是不同的字母。例如變量名例如變量名some

18、thingsomething,SomethingSomething,SOMETHINGSOMETHING都是不同的名都是不同的名字。字。 命名變量名要遵守如下的規(guī)則命名變量名要遵守如下的規(guī)則:(1 1)不能是)不能是C#C#關(guān)鍵字。關(guān)鍵字。(2 2)第一個(gè)字符必須是字母或下劃線。)第一個(gè)字符必須是字母或下劃線。(3 3)不要太長,一般不超過)不要太長,一般不超過3131個(gè)字符為宜。個(gè)字符為宜。(4 4)不能以數(shù)字開頭)不能以數(shù)字開頭(5 5)中間不能有空格)中間不能有空格(6 6)變量名中不能包含)變量名中不能包含“ “.;,”+-”.;,”+-”之類的特殊符號。實(shí)際上,變量名中之類的特殊符號

19、。實(shí)際上,變量名中除了能使用除了能使用2626個(gè)英文大小寫字母和數(shù)字外,只能使用下劃線個(gè)英文大小寫字母和數(shù)字外,只能使用下劃線“_ _”。(7 7)變量名不要與)變量名不要與C+C+中的庫函數(shù)名、類名和對象名相同。中的庫函數(shù)名、類名和對象名相同。(8 8)有意義)有意義2222C#標(biāo)識符命名規(guī)則Pascal Pascal 大小寫大小寫 將標(biāo)識符的首字母和后面連接的每個(gè)單詞的首字母都大將標(biāo)識符的首字母和后面連接的每個(gè)單詞的首字母都大寫??梢詫θ址蚋嘧址臉?biāo)識符使用寫??梢詫θ址蚋嘧址臉?biāo)識符使用Pascal Pascal 大小寫大小寫。例如:。例如: BackColor BackCo

20、lorCamel Camel 大小寫大小寫標(biāo)識符的首字母小寫,而每個(gè)后面連接的單詞的首字母都大寫標(biāo)識符的首字母小寫,而每個(gè)后面連接的單詞的首字母都大寫。例如:。例如: backColor backColor2323變量 C#C#定義了定義了7 7類變量,分別是:靜態(tài)變量、實(shí)例變量、數(shù)組元素、類變量,分別是:靜態(tài)變量、實(shí)例變量、數(shù)組元素、值參數(shù)、引用參數(shù)、輸出參數(shù)和局部變量。值參數(shù)、引用參數(shù)、輸出參數(shù)和局部變量。class Aclass A public static int x; public static int x; int y; int y; void F(int v, int a, r

21、ef int b, out int c) void F(int v, int a, ref int b, out int c) int i = 1; int i = 1; c = a + b+; c = a + b+; 2424變量 聲明變量舉例:聲明變量舉例: int a = 100; int a = 100;/聲明一個(gè)整型變量聲明一個(gè)整型變量a a,并賦初值為,并賦初值為100100 也可以采用先定義、后賦值的方式,例如:也可以采用先定義、后賦值的方式,例如: int a; int a; /聲明一個(gè)整型變量聲明一個(gè)整型變量a a a = 100; a = 100; /為整型變量為整型變量a

22、 a賦值為賦值為100100 另外,也可以把幾個(gè)變量聲明和初始化用一條語句完成,另外,也可以把幾個(gè)變量聲明和初始化用一條語句完成,各個(gè)變量之間用逗號分隔,例如:各個(gè)變量之間用逗號分隔,例如: int int a = 100a = 100, b, , b, c = 200c = 200,d; /,d; /聲明整型變量聲明整型變量a a、b b、c c、d d,并將,并將a a賦值賦值100100,c c賦值賦值2002002525匿名類型的變量 匿名類型的變量就是程序員不必指定匿名類型的變量就是程序員不必指定“局部局部”變量的類型,變量的類型,統(tǒng)統(tǒng)用統(tǒng)統(tǒng)用varvar來表示類型來表示類型即可。即

23、可。var v = new Amount = 108, Message = Hello ; var v = new Amount = 108, Message = Hello ; / / 一個(gè)匿名對象一個(gè)匿名對象Console.WriteLine(v.Amount + v.Message);Console.WriteLine(v.Amount + v.Message); 在在LINQLINQ表達(dá)式或者表達(dá)式或者foreachforeach語句中,使用匿名類型的變量比較語句中,使用匿名類型的變量比較方便。方便。var productQuery = from prod in productsvar

24、 productQuery = from prod in products select new prod.Color, prod.Price ; select new prod.Color, prod.Price ;foreach (var v in productQuery)foreach (var v in productQuery) Console.WriteLine(Color=0, Price=1, v.Color, v.Price) Console.WriteLine(Color=0, Price=1, v.Color, v.Price) 26262.4 運(yùn)算符和表達(dá)式C#C#提

25、供了提供了3 3大類運(yùn)算符:大類運(yùn)算符: 一元運(yùn)算符:帶有一個(gè)操作數(shù)的運(yùn)算符稱為一元運(yùn)算符:帶有一個(gè)操作數(shù)的運(yùn)算符稱為“一元一元”運(yùn)算符,運(yùn)算符,例如,例如,i+i+。 二元運(yùn)算符:帶有兩個(gè)操作數(shù)的運(yùn)算符稱為二元運(yùn)算符:帶有兩個(gè)操作數(shù)的運(yùn)算符稱為“二元二元”運(yùn)算符,運(yùn)算符,例如,例如,x + yx + y。 三元運(yùn)算符:帶有三個(gè)操作數(shù)的運(yùn)算符稱為三元運(yùn)算符:帶有三個(gè)操作數(shù)的運(yùn)算符稱為“三元三元”運(yùn)算符,運(yùn)算符,在在C#C#中,只存在中,只存在1 1個(gè)三元運(yùn)算符,即條件運(yùn)算符個(gè)三元運(yùn)算符,即條件運(yùn)算符“?:?:”。 C#C#的常用運(yùn)算符及其含義如的常用運(yùn)算符及其含義如表表2-62-6. . C#

26、C#的常用運(yùn)算符的優(yōu)先級如的常用運(yùn)算符的優(yōu)先級如表表2-72-7. .27272.4 運(yùn)算符和表達(dá)式表達(dá)式表達(dá)式 C#C#的表達(dá)式與的表達(dá)式與C+C+和和JavaJava類似。類似。 如:如: x+yx+y (x+yz) & (xz) & (x 100 | i 100 | i 0) Console.WriteLine( Console.WriteLine(成績不在成績不在0-1000-100范圍內(nèi)范圍內(nèi));); 4545 elseelse switch (i / 10) / switch (i / 10) /整除整除 case 10: case 10: Console.Write( Conso

27、le.Write(滿分,滿分,);); goto case 9; goto case 9; case 9: case 9: Console.WriteLine( Console.WriteLine(優(yōu)秀優(yōu)秀);); break; break; case 8:case 8: case 7: case 7: Console.WriteLine( Console.WriteLine(良好良好);); break; break; case 6: case 6: Console.WriteLine( Console.WriteLine(及格及格);); break; break; default: de

28、fault: Console.WriteLine( Console.WriteLine(不及格不及格);); break; break; Console.ReadLine(); Console.ReadLine(); 46462.6.2 循環(huán)語句u 包括:包括: forfor語句語句 whilewhile語句語句 do-whiledo-while語句語句 foreachforeach語句,用于對集合、數(shù)組進(jìn)行操作。語句,用于對集合、數(shù)組進(jìn)行操作。 47472.6.2 循環(huán)語句(續(xù))forfor語句語句一般形式:一般形式:for (for (初始值初始值; ;循環(huán)條件循環(huán)條件; ;循環(huán)控制循環(huán)控

29、制) ) 語句序列語句序列 4848例2-4.使用for語句控制循環(huán)體 public static void Main() public static void Main() Console.Clear(); Console.Clear(); Console.BackgroundColor = ConsoleColor.Blue; Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.Red; Console.ForegroundColor = ConsoleColor.Red;

30、Console.Beep(); Console.Beep(); for (int i = 1; i 10; i += 2) for (int i = 1; i 10; i += 2) Console.SetCursorPosition(40 - i / 2, i); Console.SetCursorPosition(40 - i / 2, i); for (int j = 0; j i; j+)for (int j = 0; j i; j+) Console.Write( Console.Write(* *);); Console.WriteLine(); Console.WriteLine

31、(); Console.ReadLine(); Console.ReadLine(); 49492.6.2 循環(huán)語句(續(xù))u foreachforeach語句語句 foreachforeach語句用于逐個(gè)提取集合中的元素,并對集合語句用于逐個(gè)提取集合中的元素,并對集合中每個(gè)元素執(zhí)行語句序列中操作的場合。一般形式為:中每個(gè)元素執(zhí)行語句序列中操作的場合。一般形式為: foreachforeach ( ( 類型類型 標(biāo)識符標(biāo)識符 in in 表達(dá)式表達(dá)式 ) ) 語句序列語句序列 注意注意(1 1)循環(huán)變量是一個(gè)只讀型的局部變量循環(huán)變量是一個(gè)只讀型的局部變量。 (2 2)循環(huán)變量類型必須和表達(dá)式所包

32、含的集合元素循環(huán)變量類型必須和表達(dá)式所包含的集合元素的類型一致的類型一致50502.6.2 循環(huán)語句(續(xù))判斷下列語句是否正確判斷下列語句是否正確, ,并說明原因:并說明原因: int myInt=1,2,3;int myInt=1,2,3; foreach(float test in myInt) foreach(float test in myInt) test+; test+; Console.WriteLine(test); Console.WriteLine(test); 問題問題1 1:循環(huán)變量在循環(huán)體中被賦值:循環(huán)變量在循環(huán)體中被賦值test+;test+;(循環(huán)變量是一個(gè)只讀型

33、的局部循環(huán)變量是一個(gè)只讀型的局部變量變量)問題問題2 2:float test float test (循環(huán)變量類型必須和表達(dá)式所包含的節(jié)元素類型一致)(循環(huán)變量類型必須和表達(dá)式所包含的節(jié)元素類型一致)例題例題2-52-551512.6.2 循環(huán)語句(續(xù))whilewhile語句語句一般形式:一般形式: while (while (條件條件) ) 語句序列語句序列 循環(huán)體內(nèi)的程序可能會執(zhí)行多次,也可能一次也不執(zhí)行。循環(huán)體內(nèi)的程序可能會執(zhí)行多次,也可能一次也不執(zhí)行。例題例題2-62-652522.6.2 循環(huán)語句(續(xù))do-whiledo-while一般形式:一般形式: dodo 語句序列語句序

34、列 while (while (條件條件);); 循環(huán)體內(nèi)的程序至少會執(zhí)行一次,然后再判斷條件是否為循環(huán)體內(nèi)的程序至少會執(zhí)行一次,然后再判斷條件是否為truetrue,如果條件為如果條件為truetrue,則繼續(xù)循環(huán),則繼續(xù)循環(huán)。53532.6.3 跳轉(zhuǎn)語句u1.break1.break語句語句 功能:功能:退出最近的封閉退出最近的封閉switchswitch、whilewhile、dodo- -whilewhile、forfor或或foreachforeach語句。語句。 格式:格式: break;break;5454【例】循環(huán)接收和輸出鍵盤輸入的每一行的值,當(dāng)接收的內(nèi)容為空字符串時(shí)退出。

35、using System;using System;namespace BreakExamplenamespace BreakExample public class Program public class Program public static void Main() public static void Main() for (; ; ) for (; ; ) Console.Write( Console.Write(請輸入一個(gè)字符串(直接回車退出)請輸入一個(gè)字符串(直接回車退出):);:); string s = Console.ReadLine();string s = Cons

36、ole.ReadLine(); if (s = ) break; if (s = ) break; Console.WriteLine( Console.WriteLine(你輸入的是你輸入的是: 0., s);: 0., s); Console.ReadLine(); Console.ReadLine(); 55552.6.3 跳轉(zhuǎn)語句 (續(xù))u2.continue2.continue語句語句 功能:功能:將控制傳遞給下一個(gè)將控制傳遞給下一個(gè)whilewhile、do-whiledo-while、forfor或或foreachforeach,繼續(xù)執(zhí)行下一次循環(huán)。,繼續(xù)執(zhí)行下一次循環(huán)。 格式:

37、格式: continue ;continue ;56562.6.3 跳轉(zhuǎn)語句 (續(xù))u3.goto3.goto語句語句僅在下面兩種情況下才可能會使用僅在下面兩種情況下才可能會使用gotogoto語句:語句:(1 1)用于)用于switchswitch語句中從一個(gè)語句中從一個(gè)casecase標(biāo)簽轉(zhuǎn)到另一個(gè)標(biāo)簽轉(zhuǎn)到另一個(gè)casecase標(biāo)標(biāo)簽處。簽處。(2 2)用于直接退出到多重嵌套循環(huán)的外部。)用于直接退出到多重嵌套循環(huán)的外部。不建議使用不建議使用gotogoto語句!語句!57572.6.3 跳轉(zhuǎn)語句 (續(xù))u4.return4.return語句語句 功能:功能:將控制返回到出現(xiàn)將控制返回到出

38、現(xiàn)returnreturn語句的函數(shù)成語句的函數(shù)成員的調(diào)用方。員的調(diào)用方。 格式:格式: return return 表達(dá)式表達(dá)式; 其中表達(dá)式為可選項(xiàng),如果該函數(shù)成員的返回其中表達(dá)式為可選項(xiàng),如果該函數(shù)成員的返回類型不為類型不為nullnull,則,則returnreturn語句必須使用表達(dá)式返回這語句必須使用表達(dá)式返回這個(gè)類型的值,否則個(gè)類型的值,否則returnreturn語句不能使用表達(dá)式。語句不能使用表達(dá)式。5858【例例2-92-9】循環(huán)與跳轉(zhuǎn)綜合舉例循環(huán)與跳轉(zhuǎn)綜合舉例 。59592.6.4 異常處理 異??梢砸詢煞N不同的方式引發(fā):異??梢砸詢煞N不同的方式引發(fā):C#C#語句和表達(dá)式

39、執(zhí)行過程中激發(fā)了某個(gè)異常的條件,語句和表達(dá)式執(zhí)行過程中激發(fā)了某個(gè)異常的條件,使得操作無法正常結(jié)束,從而引發(fā)異常。例如整數(shù)除使得操作無法正常結(jié)束,從而引發(fā)異常。例如整數(shù)除法操作分母為零時(shí)將拋出一個(gè)異常。法操作分母為零時(shí)將拋出一個(gè)異常。throwthrow語句無條件、即時(shí)的拋出異常。語句無條件、即時(shí)的拋出異常。trytry語句提供了一種機(jī)制來捕捉執(zhí)行過程中發(fā)生的語句提供了一種機(jī)制來捕捉執(zhí)行過程中發(fā)生的異常。以下是它的三種可能的形式:異常。以下是它的三種可能的形式:try-catchtry-catchtry-finallytry-finallytry-catch-finallytry-catch-f

40、inally60602.6.4 異常處理 1.try-catch1.try-catch語句語句trytry 語句序列語句序列 catchcatch(異常類型(異常類型 標(biāo)識符)標(biāo)識符) 異常處理異常處理 在程序運(yùn)行正常的時(shí)候,執(zhí)行在程序運(yùn)行正常的時(shí)候,執(zhí)行trytry塊內(nèi)的程序。如果塊內(nèi)的程序。如果trytry塊中塊中出現(xiàn)了異常,程序就轉(zhuǎn)移到出現(xiàn)了異常,程序就轉(zhuǎn)移到catchcatch塊中執(zhí)行。塊中執(zhí)行。 61612.6.4 異常處理 (續(xù)) 2.try-catch-finally 2.try-catch-finally語句語句trytry 語句序列語句序列 catchcatch(異常類型(異常類型 標(biāo)識符)標(biāo)識符) 異常處理異常處理 finally finally /無論是否有異常,均會執(zhí)行;即使無論是否有異常,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論