第4章C語言基礎(chǔ)_第1頁
第4章C語言基礎(chǔ)_第2頁
第4章C語言基礎(chǔ)_第3頁
第4章C語言基礎(chǔ)_第4頁
第4章C語言基礎(chǔ)_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、管理學(xué)院 Copyright by Xu HuijieCopyright by Xu Huijie第第4章章 C#語言基礎(chǔ)語言基礎(chǔ)本章主要內(nèi)容本章主要內(nèi)容vC#語言概述語言概述vC#語言的基本語法語言的基本語法v面向?qū)ο缶幊堂嫦驅(qū)ο缶幊?.1 C#語言概述語言概述vC#語言是專門用于語言是專門用于.NET的編程語言,是為在的編程語言,是為在.NET Framework上運(yùn)行的多種應(yīng)用程序而設(shè)計(jì)的。上運(yùn)行的多種應(yīng)用程序而設(shè)計(jì)的。vC#語言簡單、功能強(qiáng)大、類型安全,是一種面向?qū)ο蟮恼Z言,語言簡單、功能強(qiáng)大、類型安全,是一種面向?qū)ο蟮恼Z言,從從C、C+以及以及Java演化而來,吸收了其他語言的優(yōu)點(diǎn),

2、并解演化而來,吸收了其他語言的優(yōu)點(diǎn),并解決了它們存在的問題。決了它們存在的問題。 vC#語言憑借自身的多項(xiàng)創(chuàng)新,實(shí)現(xiàn)了應(yīng)用程序的快速開發(fā),語言憑借自身的多項(xiàng)創(chuàng)新,實(shí)現(xiàn)了應(yīng)用程序的快速開發(fā),幾乎可以開發(fā)出所有的幾乎可以開發(fā)出所有的Windows程序。程序。vC#是一種對(duì)大小寫敏感的語言,在是一種對(duì)大小寫敏感的語言,在C#程序中,同名的大寫和程序中,同名的大寫和小寫代表不同的對(duì)象,因此在輸入關(guān)鍵字、變量和函數(shù)時(shí)必須小寫代表不同的對(duì)象,因此在輸入關(guān)鍵字、變量和函數(shù)時(shí)必須使用適當(dāng)?shù)淖址?。使用適當(dāng)?shù)淖址?。v對(duì)于關(guān)鍵字基本上都采用小寫對(duì)于關(guān)鍵字基本上都采用小寫 。v對(duì)于私有變量的定義一般都以小寫字母開頭、

3、而公共變量的對(duì)于私有變量的定義一般都以小寫字母開頭、而公共變量的定義則以大寫字母開頭。定義則以大寫字母開頭。v在一個(gè)開發(fā)語言中,注釋也是非常重要。在一個(gè)開發(fā)語言中,注釋也是非常重要。C#提供了兩提供了兩種注釋的類型:種注釋的類型: 1. 第一種是:單行注釋,注釋符號(hào)是第一種是:單行注釋,注釋符號(hào)是“/”,例如:,例如: int a; /一個(gè)整型變量,存儲(chǔ)整數(shù)一個(gè)整型變量,存儲(chǔ)整數(shù) 2. 第二種是:多行注釋,注釋符號(hào)是第二種是:多行注釋,注釋符號(hào)是“/*”和和“*/”,任何在符號(hào)任何在符號(hào)“/*”和和“*/”之間的內(nèi)容都會(huì)被編譯器忽略,之間的內(nèi)容都會(huì)被編譯器忽略,例如:例如: /*一個(gè)整型變量,

4、存儲(chǔ)整數(shù)一個(gè)整型變量,存儲(chǔ)整數(shù)*/ int a; 3.XML注釋符號(hào)注釋符號(hào)“/”也可以用來對(duì)也可以用來對(duì)C#程序進(jìn)行注釋,程序進(jìn)行注釋,例如:例如: /一個(gè)整型變量一個(gè)整型變量 /存儲(chǔ)整數(shù)存儲(chǔ)整數(shù) int a;v每一句每一句C#程序都要以語句終止符來終結(jié),程序都要以語句終止符來終結(jié),C#的語的語句終止符是句終止符是“;”。例如:例如: int a;v在在C#程序中,可以在一行中寫多個(gè)語句,但每個(gè)程序中,可以在一行中寫多個(gè)語句,但每個(gè)語句都要以語句都要以“;”結(jié)束,也可以在多行中寫一個(gè)語句,結(jié)束,也可以在多行中寫一個(gè)語句,但要在最后一行中以但要在最后一行中以“;”結(jié)束。結(jié)束。例如:例如: in

5、t a; string s; float f; /一行中多個(gè)語句一行中多個(gè)語句v語句塊:在語句塊:在C#程序中,把用符號(hào)程序中,把用符號(hào)“”和和“ ”包含包含起來的程序稱為語句塊。語句塊在條件和循環(huán)語句起來的程序稱為語句塊。語句塊在條件和循環(huán)語句中經(jīng)常會(huì)用到,主要是把重復(fù)使用的程序語句放在中經(jīng)常會(huì)用到,主要是把重復(fù)使用的程序語句放在一起以方便使用,這樣有助于程序的結(jié)構(gòu)化。一起以方便使用,這樣有助于程序的結(jié)構(gòu)化。eg14.2 C#語言的基本語法語言的基本語法vC#的數(shù)據(jù)類型包括的數(shù)據(jù)類型包括值類型、引用類型和指針類型值類型、引用類型和指針類型。指。指針類型是不安全類型,一般不推薦使用。針類型是不

6、安全類型,一般不推薦使用。v值類型直接存儲(chǔ)值,而引用類型存儲(chǔ)的是對(duì)值的引用。值類型直接存儲(chǔ)值,而引用類型存儲(chǔ)的是對(duì)值的引用。將一個(gè)值類型變量賦給另一個(gè)值類型變量時(shí),將復(fù)制包將一個(gè)值類型變量賦給另一個(gè)值類型變量時(shí),將復(fù)制包含的值。所有的值類型不包含含的值。所有的值類型不包含null值,它們都隱含地聲值,它們都隱含地聲明了一個(gè)公共的無參數(shù)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)返回明了一個(gè)公共的無參數(shù)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)返回一個(gè)初始為零的值類型的實(shí)例。例如,對(duì)于字符型,默一個(gè)初始為零的值類型的實(shí)例。例如,對(duì)于字符型,默認(rèn)值是認(rèn)值是“x0000”;對(duì)于;對(duì)于float,默認(rèn)值是,默認(rèn)值是0.0F。 v值類型包括

7、所有值類型包括所有簡單數(shù)據(jù)類型簡單數(shù)據(jù)類型(如字符型、浮點(diǎn)型和(如字符型、浮點(diǎn)型和整數(shù)類等)、整數(shù)類等)、枚舉類型和結(jié)構(gòu)類型。枚舉類型和結(jié)構(gòu)類型。引用類型包括類類引用類型包括類類型、對(duì)象類型、字符串類型、接口類型、委托類型和數(shù)型、對(duì)象類型、字符串類型、接口類型、委托類型和數(shù)組類型。組類型。4.2.1 C#數(shù)據(jù)類型數(shù)據(jù)類型1. 值類型值類型v值類型包括所有值類型包括所有簡單數(shù)據(jù)類型簡單數(shù)據(jù)類型(如字符型、(如字符型、浮點(diǎn)型和整數(shù)類等)、浮點(diǎn)型和整數(shù)類等)、枚舉類型和結(jié)構(gòu)類枚舉類型和結(jié)構(gòu)類型型。v值類型聲明語法如下:值類型聲明語法如下:Type name;name=TypeVaue;或者:或者:T

8、ype name=new Type(); /聲明加初始化聲明加初始化 (1)簡單數(shù)據(jù)類型)簡單數(shù)據(jù)類型v簡單數(shù)據(jù)類型是簡單數(shù)據(jù)類型是C#預(yù)先定義的結(jié)構(gòu)類型,預(yù)先定義的結(jié)構(gòu)類型,簡單類型用關(guān)鍵字定義,這些關(guān)鍵字僅僅簡單類型用關(guān)鍵字定義,這些關(guān)鍵字僅僅是在是在System命名空間里預(yù)先定義的結(jié)構(gòu)類命名空間里預(yù)先定義的結(jié)構(gòu)類型的化名,比如關(guān)鍵字型的化名,比如關(guān)鍵字int對(duì)應(yīng)對(duì)應(yīng)System.Int32。簡單類型以下的數(shù)據(jù)類型如。簡單類型以下的數(shù)據(jù)類型如下表所示:下表所示:(1)簡單數(shù)據(jù)類型)簡單數(shù)據(jù)類型類類 型型CTS類型類型說說 明明范范 圍圍SbyteSystem.SByte8位有符號(hào)整數(shù)-12

9、8127shortSystem.Int1616位有符號(hào)整數(shù)-3276832767intSystem.Int3232位有符號(hào)整數(shù)-21474836482147483647longSystem.Int6464位有符號(hào)整數(shù)-263263byteSystem.Byte8位無符號(hào)整數(shù)0255ushortSystem.Unit1616位無符號(hào)整數(shù)065535unitSystem.Unit3232位無符號(hào)整數(shù)04294967295ulongSystem.Ulong64位無符號(hào)整數(shù)0264floatSystem.Single32位單精度浮點(diǎn)數(shù)1038doubleSystem.Double64位雙精度浮點(diǎn)數(shù)10

10、308decimalSystem.Decimal128位雙精度浮點(diǎn)數(shù)1028(1)簡單數(shù)據(jù)類型)簡單數(shù)據(jù)類型浮點(diǎn)類型浮點(diǎn)類型v小數(shù)在小數(shù)在C#中采用兩種數(shù)據(jù)類型來表示:單精度中采用兩種數(shù)據(jù)類型來表示:單精度float和雙精度和雙精度double, 它們的差別在于取值范圍和它們的差別在于取值范圍和精度不同。精度不同。v計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)的運(yùn)算速度大大低于對(duì)整數(shù)的運(yùn)計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)的運(yùn)算速度大大低于對(duì)整數(shù)的運(yùn)算,對(duì)精度要求不是很高的浮點(diǎn)數(shù)計(jì)算中,我們可算,對(duì)精度要求不是很高的浮點(diǎn)數(shù)計(jì)算中,我們可以采用以采用float型,而采用型,而采用double 型獲得的結(jié)果將更為型獲得的結(jié)果將更為精確,如果在程序中

11、大量地使用雙精度類浮點(diǎn)數(shù)將精確,如果在程序中大量地使用雙精度類浮點(diǎn)數(shù)將會(huì)占用更多的內(nèi)存單元,而且計(jì)算機(jī)的處理任務(wù)也會(huì)占用更多的內(nèi)存單元,而且計(jì)算機(jī)的處理任務(wù)也將更加繁重。將更加繁重。(1)簡單數(shù)據(jù)類型)簡單數(shù)據(jù)類型字符類型字符類型v除了數(shù)字以外計(jì)算機(jī)處理的信息主要就是字符了,除了數(shù)字以外計(jì)算機(jī)處理的信息主要就是字符了,C#的的char類型為雙字節(jié)型,它的數(shù)據(jù)可以占有類型為雙字節(jié)型,它的數(shù)據(jù)可以占有2個(gè)個(gè)字節(jié)。以下方法給一個(gè)字符變量賦值,如:字節(jié)。以下方法給一個(gè)字符變量賦值,如:char c = A; v C#中用轉(zhuǎn)義符在程序中指代特殊的控制字符。例中用轉(zhuǎn)義符在程序中指代特殊的控制字符。例如字符

12、串常量如字符串常量”c:windowssystem32”的真實(shí)含義的真實(shí)含義是路徑是路徑c:windowssystem32。vC#可以用反轉(zhuǎn)符可以用反轉(zhuǎn)符去掉反斜杠的轉(zhuǎn)義。例如字符去掉反斜杠的轉(zhuǎn)義。例如字符串常量串常量”c:windowssystem32”也表示路徑也表示路徑c:windowssystem32。 (1)簡單數(shù)據(jù)類型)簡單數(shù)據(jù)類型布爾類型布爾類型v布爾類型是用來表示真和假布爾類型是用來表示真和假,只有兩種取只有兩種取值值:真或假真或假;在在C#中可以把中可以把true 或或false賦給賦給布爾類型變量,也可以把一個(gè)邏輯表達(dá)式布爾類型變量,也可以把一個(gè)邏輯表達(dá)式賦給布爾類型變量。

13、例如:賦給布爾類型變量。例如: bool isTeacher=true;bool b=(85); /b值結(jié)果為假值結(jié)果為假(false) (2)枚舉類型)枚舉類型v枚舉類型是枚舉類型是C#中一種輕量級(jí)的值類型,中一種輕量級(jí)的值類型,用來表達(dá)一組特定的值的集合行為,以用來表達(dá)一組特定的值的集合行為,以enum關(guān)鍵字進(jìn)行聲明。關(guān)鍵字進(jìn)行聲明。格式:格式:enum ;(2)枚舉類型)枚舉類型v枚舉枚舉enum 實(shí)際上是為一組在邏輯上密不實(shí)際上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號(hào)可分的整數(shù)值提供便于記憶的符號(hào),比如我比如我們聲明一個(gè)代表星期的枚舉類型的變量:們聲明一個(gè)代表星期的枚舉類型的

14、變量:enum WeekDaySunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;(3)結(jié)構(gòu)類型)結(jié)構(gòu)類型v結(jié)構(gòu)類型是一種可包含構(gòu)造函數(shù)、常數(shù)、結(jié)構(gòu)類型是一種可包含構(gòu)造函數(shù)、常數(shù)、字段、方法、屬性、索引器、運(yùn)算符、事件字段、方法、屬性、索引器、運(yùn)算符、事件和嵌套類型的值類型。和嵌套類型的值類型。v它是用來封裝小型的相關(guān)變量組,把它們它是用來封裝小型的相關(guān)變量組,把它們封裝成一個(gè)實(shí)體來統(tǒng)一使用,以封裝成一個(gè)實(shí)體來統(tǒng)一使用,以struct關(guān)鍵關(guān)鍵字進(jìn)行聲明。字進(jìn)行聲明。2. 引用類型引用類型 v引用類型變量又稱為對(duì)象,在引用

15、類型變量又稱為對(duì)象,在C#中,引中,引用類型有:類類型(用類型有:類類型(class)、接口類型)、接口類型(interface)、委托類型()、委托類型(delegate )等。)等。和值類型相比,和值類型相比,引用類型不存儲(chǔ)它們所代引用類型不存儲(chǔ)它們所代表的實(shí)際數(shù)據(jù),只存儲(chǔ)對(duì)實(shí)際數(shù)據(jù)的引用。表的實(shí)際數(shù)據(jù),只存儲(chǔ)對(duì)實(shí)際數(shù)據(jù)的引用。C#有兩個(gè)內(nèi)置的引用類型,分別為有兩個(gè)內(nèi)置的引用類型,分別為Object和和String類型類型,下面將對(duì)其進(jìn)行詳細(xì)的講解。下面將對(duì)其進(jìn)行詳細(xì)的講解。(1)對(duì)象類型)對(duì)象類型v對(duì)象類型(對(duì)象類型(Object)在)在.NET框架中是框架中是System.Object

16、的別名,在的別名,在C#的統(tǒng)一類型系的統(tǒng)一類型系統(tǒng)中,所有類型(預(yù)定義類型、用戶定義統(tǒng)中,所有類型(預(yù)定義類型、用戶定義類型、引用類型和值類型)都是直接或間類型、引用類型和值類型)都是直接或間接從接從Object繼承的??梢詫⑷魏晤愋偷闹道^承的??梢詫⑷魏晤愋偷闹蒂x給賦給Object類型變量。類型變量。(換句話說,它是其換句話說,它是其他類型的基類,可將任何類型的值賦予對(duì)他類型的基類,可將任何類型的值賦予對(duì)象類型的變量。象類型的變量。)eg2(2)string 類類vC#定義了一個(gè)基本的類定義了一個(gè)基本的類string,專門用于,專門用于對(duì)字符串的操作。字符串在實(shí)際中應(yīng)用非對(duì)字符串的操作。字符

17、串在實(shí)際中應(yīng)用非常廣泛,在類的定義中封裝了許多內(nèi)部的常廣泛,在類的定義中封裝了許多內(nèi)部的操作,我們只要簡單地加以利用就可以了,操作,我們只要簡單地加以利用就可以了,可以可以用加號(hào)用加號(hào)+ 合并兩個(gè)字符串,采用下標(biāo)合并兩個(gè)字符串,采用下標(biāo)從字符串中獲取字符從字符串中獲取字符等。等。vstring String1 = “Welcome”; /定義定義string類型變量類型變量vstring String2 = “Welcome ” + “ everyone”; /字符串相加字符串相加vchar c = String10; /把把String1中的第一個(gè)值中的第一個(gè)值String10賦給字符賦給字

18、符c (2)string 類類v盡管盡管string是引用類型,但相等和不相等運(yùn)算是引用類型,但相等和不相等運(yùn)算(=和和!=)被定義比較)被定義比較string對(duì)象的值,這使得比對(duì)象的值,這使得比較字符相等性變得更為直觀,如下面代碼所示。較字符相等性變得更為直觀,如下面代碼所示。vstring a=“hello”;vstring b=h;vb+=ello; /b此時(shí)為此時(shí)為hellova=b; /值相等值相等v(object)a!=b; /值不等值不等eg33. 裝箱和拆箱裝箱和拆箱v裝箱就是將值類型轉(zhuǎn)換為引用類型裝箱就是將值類型轉(zhuǎn)換為引用類型Object,這使得值類型可以存放在垃圾回收堆中。

19、這使得值類型可以存放在垃圾回收堆中。如圖所示:如圖所示:v拆箱就是從對(duì)象中提取值類型,將引用類拆箱就是從對(duì)象中提取值類型,將引用類型轉(zhuǎn)換為值類型。如圖所示:型轉(zhuǎn)換為值類型。如圖所示:v例如下面的一段代碼:例如下面的一段代碼:int a = 10;object b = (object) a; / 裝箱裝箱b=123;a = (int) b; / 拆箱拆箱v相對(duì)于簡單的賦值而言,拆箱和裝箱需要大量的相對(duì)于簡單的賦值而言,拆箱和裝箱需要大量的運(yùn)算。對(duì)值類型進(jìn)行裝箱時(shí),必須分配并構(gòu)造一個(gè)運(yùn)算。對(duì)值類型進(jìn)行裝箱時(shí),必須分配并構(gòu)造一個(gè)全新的對(duì)象。拆箱所需要的強(qiáng)制轉(zhuǎn)換也需要大量的全新的對(duì)象。拆箱所需要的強(qiáng)制

20、轉(zhuǎn)換也需要大量的計(jì)算。因此裝箱和拆箱會(huì)對(duì)性能產(chǎn)生影響。計(jì)算。因此裝箱和拆箱會(huì)對(duì)性能產(chǎn)生影響。4.2.2 變量和常量變量和常量1.變量變量v變量是指在程序運(yùn)行過程中其值可以不斷變化的變量是指在程序運(yùn)行過程中其值可以不斷變化的量。變量通常用來保存程序運(yùn)行過程中的輸入數(shù)據(jù)、量。變量通常用來保存程序運(yùn)行過程中的輸入數(shù)據(jù)、計(jì)算獲得的中間結(jié)果和最終結(jié)果。變量的命名規(guī)則計(jì)算獲得的中間結(jié)果和最終結(jié)果。變量的命名規(guī)則必須符合標(biāo)識(shí)符的命名規(guī)則,并且變量命名要人性必須符合標(biāo)識(shí)符的命名規(guī)則,并且變量命名要人性化,以便理解?;?,以便理解。v在在C#中,變量可分為靜態(tài)變量、實(shí)例變量、數(shù)組中,變量可分為靜態(tài)變量、實(shí)例變量、

21、數(shù)組變量、局部變量、參數(shù)值、引用參數(shù)和輸出參數(shù)這變量、局部變量、參數(shù)值、引用參數(shù)和輸出參數(shù)這7種。下面分別對(duì)這種。下面分別對(duì)這7中變量進(jìn)行簡單的講解。中變量進(jìn)行簡單的講解。(1)靜態(tài)變量)靜態(tài)變量v通過通過static修飾符聲明的變量稱為靜態(tài)變修飾符聲明的變量稱為靜態(tài)變量。靜態(tài)變量只有被創(chuàng)建并加載后才會(huì)生量。靜態(tài)變量只有被創(chuàng)建并加載后才會(huì)生效,同樣被卸載后失效。聲明一個(gè)整型靜效,同樣被卸載后失效。聲明一個(gè)整型靜態(tài)變量態(tài)變量a的代碼如下:的代碼如下:static int a= 0;注意:最好在聲明時(shí)對(duì)靜態(tài)變量賦值。注意:最好在聲明時(shí)對(duì)靜態(tài)變量賦值。(2)實(shí)例變量)實(shí)例變量v聲明變量時(shí),沒有聲明變

22、量時(shí),沒有static修飾的變量稱為實(shí)例變量。修飾的變量稱為實(shí)例變量。當(dāng)類被實(shí)例化時(shí),將生成屬于該類的實(shí)例變量。當(dāng)當(dāng)類被實(shí)例化時(shí),將生成屬于該類的實(shí)例變量。當(dāng)不再對(duì)該實(shí)例進(jìn)行引用,并且已執(zhí)行實(shí)例的析構(gòu)函不再對(duì)該實(shí)例進(jìn)行引用,并且已執(zhí)行實(shí)例的析構(gòu)函數(shù)后,此實(shí)例變量將失效。類中實(shí)例變量的初始值數(shù)后,此實(shí)例變量將失效。類中實(shí)例變量的初始值是該類型變量的默認(rèn)值。為了方便進(jìn)行賦值檢查,是該類型變量的默認(rèn)值。為了方便進(jìn)行賦值檢查,類中的實(shí)例變量應(yīng)是初始化的。例如,聲明一個(gè)整類中的實(shí)例變量應(yīng)是初始化的。例如,聲明一個(gè)整型的實(shí)例變量型的實(shí)例變量a,代碼如下:,代碼如下:int a;(3)數(shù)組變量)數(shù)組變量v數(shù)

23、組元素隨著數(shù)組的存在而存在,當(dāng)任意數(shù)組元素隨著數(shù)組的存在而存在,當(dāng)任意一個(gè)數(shù)組實(shí)例被創(chuàng)建時(shí),該數(shù)組元素也被一個(gè)數(shù)組實(shí)例被創(chuàng)建時(shí),該數(shù)組元素也被同時(shí)創(chuàng)建。每個(gè)數(shù)組元素的初始值是該數(shù)同時(shí)創(chuàng)建。每個(gè)數(shù)組元素的初始值是該數(shù)組元素類型的默認(rèn)值。聲明一個(gè)整型數(shù)組組元素類型的默認(rèn)值。聲明一個(gè)整型數(shù)組變量的代碼如下:變量的代碼如下:int arry=new int5;(4)局部變量)局部變量v顧名思義,具有局部作用的變量稱為局部變量,顧名思義,具有局部作用的變量稱為局部變量,它只在定義它的塊內(nèi)起作用。所謂塊是指大括號(hào)它只在定義它的塊內(nèi)起作用。所謂塊是指大括號(hào)“”和和“”之間的所有內(nèi)容。局部變量從被聲明的之間的

24、所有內(nèi)容。局部變量從被聲明的位置開始起作用,當(dāng)塊結(jié)束時(shí),局部變量也就消失。位置開始起作用,當(dāng)塊結(jié)束時(shí),局部變量也就消失。聲明一個(gè)整形的局部變量聲明一個(gè)整形的局部變量n的代碼如下:的代碼如下:public void Test() int n=0;(5)參數(shù)值)參數(shù)值v聲明一個(gè)變量時(shí),該變量沒有聲明一個(gè)變量時(shí),該變量沒有ref和和out修飾,可修飾,可稱值變量為值參數(shù)。值參數(shù)在其隸屬的函數(shù)子句被稱值變量為值參數(shù)。值參數(shù)在其隸屬的函數(shù)子句被調(diào)用時(shí)自動(dòng)生成,同時(shí)被賦給調(diào)用中的參數(shù)值。當(dāng)調(diào)用時(shí)自動(dòng)生成,同時(shí)被賦給調(diào)用中的參數(shù)值。當(dāng)函數(shù)成員返回時(shí),值參數(shù)失效。為了方便賦值檢驗(yàn),函數(shù)成員返回時(shí),值參數(shù)失效。

25、為了方便賦值檢驗(yàn),所有的值參數(shù)都被認(rèn)為是已被初始化過的。例如,所有的值參數(shù)都被認(rèn)為是已被初始化過的。例如,聲明一個(gè)方法聲明一個(gè)方法Test的參數(shù)為整型的值參數(shù)變量的參數(shù)為整型的值參數(shù)變量a,代碼如下:代碼如下:public void Test(int a) (6)引用參數(shù))引用參數(shù)v用用ref修飾符聲明的參數(shù)為引用參數(shù)。引用參數(shù)不創(chuàng)建新的存修飾符聲明的參數(shù)為引用參數(shù)。引用參數(shù)不創(chuàng)建新的存儲(chǔ)位置。引用參數(shù)的值總是與基礎(chǔ)變量相同。若要使用儲(chǔ)位置。引用參數(shù)的值總是與基礎(chǔ)變量相同。若要使用ref參數(shù),參數(shù),則定義方法和調(diào)用方法都必須顯式使用則定義方法和調(diào)用方法都必須顯式使用ref關(guān)鍵字。例如,聲明關(guān)鍵

26、字。例如,聲明一個(gè)方法一個(gè)方法Test的參數(shù)為整型的引用參數(shù)變量的參數(shù)為整型的引用參數(shù)變量a。聲明具有引用參數(shù)的方法:聲明具有引用參數(shù)的方法:public void Test(ref int a) 調(diào)用具有引用參數(shù)的方法:調(diào)用具有引用參數(shù)的方法:int b=0;Test(ref b);(6)引用參數(shù))引用參數(shù)引用參數(shù)的賦值規(guī)則:引用參數(shù)的賦值規(guī)則:按量作為引用參數(shù)在函數(shù)成員調(diào)用中傳遞按量作為引用參數(shù)在函數(shù)成員調(diào)用中傳遞之前必須已明確賦值之前必須已明確賦值在函數(shù)成員內(nèi)部,引用參數(shù)被視為初始已在函數(shù)成員內(nèi)部,引用參數(shù)被視為初始已賦值賦值在結(jié)構(gòu)類型的實(shí)例方法或?qū)嵗L問器內(nèi)部,在結(jié)構(gòu)類型的實(shí)例方法或?qū)?/p>

27、例訪問器內(nèi)部,this關(guān)鍵字的行為與該結(jié)構(gòu)類型的引用參數(shù)關(guān)鍵字的行為與該結(jié)構(gòu)類型的引用參數(shù)完全不同完全不同(7)輸出參數(shù))輸出參數(shù)v用用out修飾符聲明的參數(shù)是輸出參數(shù)。輸出參數(shù)不創(chuàng)建修飾符聲明的參數(shù)是輸出參數(shù)。輸出參數(shù)不創(chuàng)建新的存儲(chǔ)位置。相反,輸出參數(shù)表示在對(duì)該函數(shù)成員調(diào)新的存儲(chǔ)位置。相反,輸出參數(shù)表示在對(duì)該函數(shù)成員調(diào)用中被當(dāng)作用中被當(dāng)作“自變量自變量”的變量所表示的同一個(gè)存儲(chǔ)位置。的變量所表示的同一個(gè)存儲(chǔ)位置。因此,輸出參數(shù)的值總是與基礎(chǔ)變量相同。聲明一個(gè)方因此,輸出參數(shù)的值總是與基礎(chǔ)變量相同。聲明一個(gè)方法法Test的參數(shù)為整型的引用參數(shù)變量的參數(shù)為整型的引用參數(shù)變量a的代碼如下:的代碼如

28、下:public void Test(out int a) 調(diào)用具有輸出參數(shù)的方法:調(diào)用具有輸出參數(shù)的方法:int b=0;Test(out b);(7)輸出參數(shù))輸出參數(shù)v輸出參數(shù)的賦值規(guī)則:輸出參數(shù)的賦值規(guī)則:變量在作為參數(shù)在函數(shù)成員調(diào)用中傳遞之前,不變量在作為參數(shù)在函數(shù)成員調(diào)用中傳遞之前,不一定要明確賦值一定要明確賦值在正常完成函數(shù)成員調(diào)用之后,每個(gè)作為輸出參在正常完成函數(shù)成員調(diào)用之后,每個(gè)作為輸出參數(shù)傳遞的變量都被認(rèn)為在該執(zhí)行路徑中已賦值數(shù)傳遞的變量都被認(rèn)為在該執(zhí)行路徑中已賦值在函數(shù)成員內(nèi)部,輸出參數(shù)被視為初始未賦值在函數(shù)成員內(nèi)部,輸出參數(shù)被視為初始未賦值函數(shù)成員的每個(gè)輸出參數(shù)在該函數(shù)

29、成員正常返回函數(shù)成員的每個(gè)輸出參數(shù)在該函數(shù)成員正常返回前都必須已明確賦值前都必須已明確賦值在結(jié)構(gòu)類型的實(shí)例構(gòu)造函數(shù)內(nèi)部,在結(jié)構(gòu)類型的實(shí)例構(gòu)造函數(shù)內(nèi)部,this關(guān)鍵字的行關(guān)鍵字的行為與結(jié)構(gòu)類型的輸出參數(shù)完全相同為與結(jié)構(gòu)類型的輸出參數(shù)完全相同2.常量常量v常量又稱常數(shù),是在程序運(yùn)行的過程中其值不改變的常量又稱常數(shù),是在程序運(yùn)行的過程中其值不改變的量。在量。在C#中,常量的數(shù)據(jù)類型主要有幾種:中,常量的數(shù)據(jù)類型主要有幾種:sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,decimal,bool,string等。等。常量通常使

30、用常量通常使用const關(guān)鍵字聲明,代碼如下:關(guān)鍵字聲明,代碼如下:class Calendar1 public const int num=10;上面的示例中,常數(shù)上面的示例中,常數(shù)num始終為始終為10,不能更改。,不能更改。v只要不造成循環(huán)引用,用于初始化一個(gè)常數(shù)的表達(dá)式就可以只要不造成循環(huán)引用,用于初始化一個(gè)常數(shù)的表達(dá)式就可以引用另一個(gè)常數(shù)。代碼如下:引用另一個(gè)常數(shù)。代碼如下:class Calendar2 const int a=10; const int b=5; const double c=a/b;v常數(shù)可標(biāo)記為常數(shù)可標(biāo)記為public(公有)、(公有)、private(私有)

31、、(私有)、protected(派生)、(派生)、internal(程序集)或(程序集)或protectedinternal(類派生的(類派生的當(dāng)前程序集)。這些訪問修飾符定義類的用戶訪問該常數(shù)的方當(dāng)前程序集)。這些訪問修飾符定義類的用戶訪問該常數(shù)的方式。式。4.2.3 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換1. 隱式轉(zhuǎn)換隱式轉(zhuǎn)換v隱式類型轉(zhuǎn)換是指將低精度數(shù)值轉(zhuǎn)換為高隱式類型轉(zhuǎn)換是指將低精度數(shù)值轉(zhuǎn)換為高精度數(shù)值,可以直接賦值而不用任何轉(zhuǎn)換。精度數(shù)值,可以直接賦值而不用任何轉(zhuǎn)換。隱式轉(zhuǎn)換可能在多種情況下發(fā)生,包括在隱式轉(zhuǎn)換可能在多種情況下發(fā)生,包括在調(diào)用方法時(shí)或在賦值語句中。調(diào)用方法時(shí)或在賦值語句中。v隱式類

32、型轉(zhuǎn)換如下表所示:隱式類型轉(zhuǎn)換如下表所示:源類型源類型目標(biāo)類型目標(biāo)類型Sbyteshort、int、long、float、double、decimalbyteshort、ushort、int、uint、long、ulong、float、double、decimalshortint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimaluintlong、ulong、float、double、decimalcharushort、int、uint、long、ulong、float、double、decimalfl

33、oatdoubleulongfloat、double、decimalLongfloat、double、decimal隱式類型轉(zhuǎn)換表隱式類型轉(zhuǎn)換表v例如,將整型轉(zhuǎn)換為單精度型。代碼如下:例如,將整型轉(zhuǎn)換為單精度型。代碼如下:int a=10;float b=a; /整型轉(zhuǎn)換為單精度型整型轉(zhuǎn)換為單精度型2. 顯式轉(zhuǎn)換顯式轉(zhuǎn)換v顯式轉(zhuǎn)換是指將高精度數(shù)值轉(zhuǎn)換為低精度數(shù)值,顯式轉(zhuǎn)換是指將高精度數(shù)值轉(zhuǎn)換為低精度數(shù)值,必須指明將要轉(zhuǎn)換的目標(biāo)類型。必須指明將要轉(zhuǎn)換的目標(biāo)類型。由于數(shù)據(jù)類型的差由于數(shù)據(jù)類型的差異,有可能丟失部分?jǐn)?shù)據(jù)。例如,將雙精度型轉(zhuǎn)換異,有可能丟失部分?jǐn)?shù)據(jù)。例如,將雙精度型轉(zhuǎn)換為整型。代碼如下

34、:為整型。代碼如下:double a=10.023;int b=(int)a; /雙精度型轉(zhuǎn)換為整型雙精度型轉(zhuǎn)換為整型轉(zhuǎn)換后轉(zhuǎn)換后b=10;3. System.Convert轉(zhuǎn)換轉(zhuǎn)換vSystem.Convert類為支持的轉(zhuǎn)換提供了一整套方類為支持的轉(zhuǎn)換提供了一整套方法。它提供了一種與語言無關(guān)的方法來執(zhí)行轉(zhuǎn)換,法。它提供了一種與語言無關(guān)的方法來執(zhí)行轉(zhuǎn)換,而且可用于針對(duì)公共語言運(yùn)行庫的所有語言。而且可用于針對(duì)公共語言運(yùn)行庫的所有語言。Convert類可確保所有公共轉(zhuǎn)換都可使用一般格式。類可確保所有公共轉(zhuǎn)換都可使用一般格式。該類可執(zhí)行收縮轉(zhuǎn)換以及不相關(guān)數(shù)據(jù)的轉(zhuǎn)換。例如,該類可執(zhí)行收縮轉(zhuǎn)換以及不相關(guān)

35、數(shù)據(jù)的轉(zhuǎn)換。例如,可以從可以從String類型轉(zhuǎn)換為數(shù)值類型,從類型轉(zhuǎn)換為數(shù)值類型,從DateTime轉(zhuǎn)轉(zhuǎn)換為換為String類型,以及從類型,以及從Sting類型轉(zhuǎn)換為類型轉(zhuǎn)換為bool類型。類型。vConvert轉(zhuǎn)換的方法,如下表所示:轉(zhuǎn)換的方法,如下表所示:方方 法法說說 明明ToBase64CharArray將8位無符號(hào)整數(shù)數(shù)組的子集轉(zhuǎn)換為用Base64數(shù)字編碼的Unicode字符數(shù)組的等價(jià)子集ToBase64String將8位無符號(hào)整數(shù)數(shù)組的子集轉(zhuǎn)換為其等效String形式(使用Base64數(shù)字編碼)ToByte將指定的值轉(zhuǎn)換為8位無符號(hào)整數(shù)ToChar將制定的值轉(zhuǎn)換為Unicode

36、字符ToDateTime將指定的值轉(zhuǎn)換為Decimal(十進(jìn)制數(shù)字)ToDecimal將指定的值轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)(128位)ToDouble將指定的值轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)(64位)ToInt16將指定的值轉(zhuǎn)換為16位有符號(hào)整數(shù)ToInt32將指定的值轉(zhuǎn)換為32位有符號(hào)整數(shù)ToInt64將指定的值轉(zhuǎn)換為64位有符號(hào)整數(shù)ToSByte將指定的值轉(zhuǎn)換為8位有符號(hào)整數(shù)ToString將指定的值轉(zhuǎn)換為字符串ToSingle將指定的值轉(zhuǎn)換為單精度浮點(diǎn)數(shù)Convert類轉(zhuǎn)換方法類轉(zhuǎn)換方法v用用Convert方法將方法將string類型轉(zhuǎn)化為類型轉(zhuǎn)化為Int的代碼如下:的代碼如下:string a=”1234

37、56”;int b=Convert.ToInt32(a);以上轉(zhuǎn)換的結(jié)果為以上轉(zhuǎn)換的結(jié)果為b=123456vConvert方法也可以進(jìn)行字符串類型與日期類型的轉(zhuǎn)換,如果想將一方法也可以進(jìn)行字符串類型與日期類型的轉(zhuǎn)換,如果想將一個(gè)字符串類型的日期轉(zhuǎn)換為字符串類型,可以進(jìn)行如下代碼轉(zhuǎn)換:個(gè)字符串類型的日期轉(zhuǎn)換為字符串類型,可以進(jìn)行如下代碼轉(zhuǎn)換:string str=”1993/10/02”;DateTime dt=Convert.ToDateTime(str);則則dt即為日期型字符。同理也可將日期類型轉(zhuǎn)換為字符串類型,代碼如即為日期型字符。同理也可將日期類型轉(zhuǎn)換為字符串類型,代碼如下:下:Dat

38、eTime dt=”1993/10/02”;string str=Convert.ToString(dt);4.2.4 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式v程序?qū)?shù)據(jù)的操作,其實(shí)就是指對(duì)數(shù)據(jù)的各種運(yùn)程序?qū)?shù)據(jù)的操作,其實(shí)就是指對(duì)數(shù)據(jù)的各種運(yùn)算。被運(yùn)算的對(duì)象,如常數(shù)、常量、變量等稱為操算。被運(yùn)算的對(duì)象,如常數(shù)、常量、變量等稱為操作數(shù)。運(yùn)算符是指用來對(duì)操作數(shù)進(jìn)行各種運(yùn)算的操作數(shù)。運(yùn)算符是指用來對(duì)操作數(shù)進(jìn)行各種運(yùn)算的操作符號(hào),如加號(hào)或減號(hào)等。諸多的操作數(shù)通過運(yùn)算作符號(hào),如加號(hào)或減號(hào)等。諸多的操作數(shù)通過運(yùn)算符連成一個(gè)整體后,就成為一個(gè)表達(dá)式。符連成一個(gè)整體后,就成為一個(gè)表達(dá)式。v在在C#.NET中具有豐富的

39、運(yùn)算符,可分為算術(shù)運(yùn)算中具有豐富的運(yùn)算符,可分為算術(shù)運(yùn)算符、賦值運(yùn)算符、位邏輯運(yùn)算符、比較運(yùn)算符、鏈符、賦值運(yùn)算符、位邏輯運(yùn)算符、比較運(yùn)算符、鏈接運(yùn)算符、邏輯運(yùn)算符、字符運(yùn)算符。接運(yùn)算符、邏輯運(yùn)算符、字符運(yùn)算符。1. 算術(shù)運(yùn)算符算術(shù)運(yùn)算符v算術(shù)運(yùn)算符用于組合數(shù)字、數(shù)值變量、數(shù)算術(shù)運(yùn)算符用于組合數(shù)字、數(shù)值變量、數(shù)值字段和數(shù)值函數(shù),以得到另一個(gè)數(shù)字。值字段和數(shù)值函數(shù),以得到另一個(gè)數(shù)字。用于鏈接運(yùn)算表達(dá)式的各種運(yùn)算符如下表用于鏈接運(yùn)算表達(dá)式的各種運(yùn)算符如下表所示:所示:運(yùn)算符運(yùn)算符運(yùn)算符定義運(yùn)算符定義舉舉 例例說說 明明+加法符號(hào)X=A+BX等于A加B所得的結(jié)果-減法符號(hào)X=A-BX等于A減B所得的

40、結(jié)果*乘法符號(hào)X=A*BX等于A乘B所得的結(jié)果/除法符號(hào)X=A/BX等于A除B所得的商%取模符號(hào)X=A%BX等于A除B所得的余數(shù)算術(shù)運(yùn)算符算術(shù)運(yùn)算符2. 賦值運(yùn)算符賦值運(yùn)算符v賦值運(yùn)算符用于賦值運(yùn)算。在賦值運(yùn)算符用于賦值運(yùn)算。在C#.NET中常用中常用的賦值運(yùn)算符及其描述如下表所示:的賦值運(yùn)算符及其描述如下表所示:運(yùn)算符運(yùn)算符運(yùn)算符定義運(yùn)算符定義舉舉 例例說說 明明=賦值X=A+=加X+=AX=X+A-=減X-=AX=X-A*=乘X*=AX=X*A/=除X/=AX=X/A%=取余X%=AX=X%A賦值運(yùn)算符賦值運(yùn)算符3.比較運(yùn)算符比較運(yùn)算符v比較運(yùn)算符用于比較兩個(gè)對(duì)象之間的相互關(guān)系,比較運(yùn)算符

41、用于比較兩個(gè)對(duì)象之間的相互關(guān)系,返回值為返回值為True和和False。各種比較運(yùn)算符如下表。各種比較運(yùn)算符如下表所示:所示:運(yùn)算符運(yùn)算符說說 明明舉舉 例例結(jié)結(jié) 果果=運(yùn)算符檢驗(yàn)兩個(gè)操作數(shù)A、B是否相等3=1False運(yùn)算符檢驗(yàn)第一個(gè)操作數(shù)A是否大于第二個(gè)操作數(shù)B31True運(yùn)算符檢驗(yàn)第一個(gè)操作數(shù)A是否小于第二個(gè)操作數(shù)B3=運(yùn)算符檢驗(yàn)第一個(gè)操作數(shù)A是否大于或等于第二個(gè)操作數(shù)B3=1True=運(yùn)算符檢驗(yàn)第一個(gè)操作數(shù)A是否小于或等于第二個(gè)操作數(shù)B312)&(1210) /x=Truex=(2312)|(1210) /x=Truex=(2312)|(1210) /x=Truex=(2312

42、)|(1212) /x=Falsex=(2312)(1212)(1210) /x=False5.運(yùn)算符優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)v當(dāng)表達(dá)式中包含多個(gè)運(yùn)算符時(shí),運(yùn)算符的當(dāng)表達(dá)式中包含多個(gè)運(yùn)算符時(shí),運(yùn)算符的計(jì)算是有優(yōu)先級(jí)的。例如,表達(dá)式計(jì)算是有優(yōu)先級(jí)的。例如,表達(dá)式x+y*z會(huì)會(huì)按按x+(y*z)計(jì)算,因?yàn)橛?jì)算,因?yàn)?運(yùn)算符的優(yōu)先級(jí)高于運(yùn)算符的優(yōu)先級(jí)高于+運(yùn)算符。下表按優(yōu)先級(jí)降低的順序提供了運(yùn)算符。下表按優(yōu)先級(jí)降低的順序提供了所有運(yùn)算符。同一行中的運(yùn)算符具有相同所有運(yùn)算符。同一行中的運(yùn)算符具有相同的優(yōu)先級(jí),按它們?cè)诒硎局谐霈F(xiàn)的順序從的優(yōu)先級(jí),按它們?cè)诒硎局谐霈F(xiàn)的順序從左向右計(jì)算。左向右計(jì)算。類別操作符類別

43、操作符操作符操作符初級(jí)操作符(x) x.y f(x)a x x+ +xnew type of sizeof checked unchecked一元操作符+ - ! + +xx (T) x乘除操作符* / %加減操作符+ -移位操作符 關(guān)系操作符 = is as等式操作符= !=邏輯與操作符&邏輯或異操作符邏輯或操作符|條件與操作符&條件或操作符|條件操作符?:賦值操作符= *= /= %= += -= = &= = |=比較運(yùn)算符比較運(yùn)算符v當(dāng)操作數(shù)出現(xiàn)在兩個(gè)同級(jí)運(yùn)算符之間時(shí),當(dāng)操作數(shù)出現(xiàn)在兩個(gè)同級(jí)運(yùn)算符之間時(shí),運(yùn)算符的關(guān)聯(lián)控制運(yùn)算的執(zhí)行順序。所有運(yùn)算符的關(guān)聯(lián)控制運(yùn)算的

44、執(zhí)行順序。所有的二進(jìn)制運(yùn)算都是向左關(guān)聯(lián)的,即運(yùn)算的的二進(jìn)制運(yùn)算都是向左關(guān)聯(lián)的,即運(yùn)算的執(zhí)行順序是從左向右的。優(yōu)先級(jí)和關(guān)聯(lián)性執(zhí)行順序是從左向右的。優(yōu)先級(jí)和關(guān)聯(lián)性可以通過帶括號(hào)的表達(dá)式控制??梢酝ㄟ^帶括號(hào)的表達(dá)式控制。4.2.5 流程控制流程控制v一個(gè)程序指令一般都是按順序執(zhí)行的,但一個(gè)程序指令一般都是按順序執(zhí)行的,但實(shí)際上在許多時(shí)候會(huì)根據(jù)一定的條件來執(zhí)實(shí)際上在許多時(shí)候會(huì)根據(jù)一定的條件來執(zhí)行不同的程序指令段,這就需要有相關(guān)的行不同的程序指令段,這就需要有相關(guān)的控制語句來控制程序的流程。這個(gè)過程叫控制語句來控制程序的流程。這個(gè)過程叫做流程控制,這種改變流程的語句叫做控做流程控制,這種改變流程的語句叫

45、做控制語句。制語句。1. 分支結(jié)構(gòu)分支結(jié)構(gòu)v使用分支結(jié)構(gòu)語句塊中的條件表達(dá)式可以使用分支結(jié)構(gòu)語句塊中的條件表達(dá)式可以控制程序中哪些語句被執(zhí)行,以及以什么控制程序中哪些語句被執(zhí)行,以及以什么樣的次序執(zhí)行。在樣的次序執(zhí)行。在C#中選擇語句又可以分中選擇語句又可以分為兩種:為兩種:if語句和語句和switch語句。語句。(1)if語句語句簡單條件表達(dá)式簡單條件表達(dá)式vIf語句是最有用的控制結(jié)構(gòu)之一,當(dāng)條件為真時(shí)執(zhí)行一系列語句,當(dāng)語句是最有用的控制結(jié)構(gòu)之一,當(dāng)條件為真時(shí)執(zhí)行一系列語句,當(dāng)條件為假時(shí)執(zhí)行另一系列語句。條件為假時(shí)執(zhí)行另一系列語句。If分支語句在程序中計(jì)算條件值,并根分支語句在程序中計(jì)算條件

46、值,并根據(jù)條件值決定下一步執(zhí)行的操作。簡單的據(jù)條件值決定下一步執(zhí)行的操作。簡單的if分支結(jié)構(gòu)有以下兩種形式。分支結(jié)構(gòu)有以下兩種形式。格式一:格式一:if(布爾表達(dá)式布爾表達(dá)式) 程序語句程序語句 格式二:格式二:if(布爾表達(dá)式布爾表達(dá)式) 程序語句程序語句 else 程序語句程序語句 v當(dāng)當(dāng)if語句中的布爾表達(dá)式的值為語句中的布爾表達(dá)式的值為“True”時(shí),則執(zhí)行后面的程序語句,時(shí),則執(zhí)行后面的程序語句,例如:例如:string str;if(score=60) str=”恭喜您通過了!恭喜您通過了!”;else str=”很遺憾您沒通過!很遺憾您沒通過!”;vIf語句可以嵌套語句可以嵌套i

47、f語句,如下例所示:語句,如下例所示:int Number,Digits;Number=53; /初始化初始化Number變量變量if(Number10) Digits=1;else if(Number100) Digits=2; else Digits=3; v上述代碼等同于如下代碼:上述代碼等同于如下代碼:int Number,Digits;Number=53; /初始化初始化Number變量變量if(Number10) Digits=1;else if(Number=60&score=60)?”通過通過”:”沒通過沒通過”;上面代碼執(zhí)行的結(jié)果為上面代碼執(zhí)行的結(jié)果為str被賦值為被

48、賦值為“通通過過”。(2)switch語句語句v如果要將同一表達(dá)式與多個(gè)不同的值進(jìn)行比較,可以使用如果要將同一表達(dá)式與多個(gè)不同的值進(jìn)行比較,可以使用switch語句替換語句替換if語句。另外,語句。另外,switch語句只計(jì)算表達(dá)式一次,然后在每語句只計(jì)算表達(dá)式一次,然后在每次比較中都在使用它。次比較中都在使用它。switch結(jié)構(gòu)的語法如下所示:結(jié)構(gòu)的語法如下所示:switch(條件表達(dá)式條件表達(dá)式)case值值1:語句語句1;break;case值值2:語句語句2;break;default:語句語句;break;eg4(2)switch語句語句vSwitch語句的形式是以語句的形式是以sw

49、itch表達(dá)式開始,后跟表達(dá)式開始,后跟一連串的一連串的switch塊,每一個(gè)塊,每一個(gè)switch塊通過塊通過case來標(biāo)記。來標(biāo)記。當(dāng)條件表達(dá)式的值對(duì)應(yīng)與某個(gè)特定的當(dāng)條件表達(dá)式的值對(duì)應(yīng)與某個(gè)特定的case值時(shí),程值時(shí),程序就緊跟著該序就緊跟著該case的代碼。若沒有與之匹配的的代碼。若沒有與之匹配的case值,而定義了值,而定義了default條件,則執(zhí)行條件,則執(zhí)行default條件中的條件中的代碼。代碼。v另外,每個(gè)另外,每個(gè)switch塊結(jié)束處必須使用塊結(jié)束處必須使用break語句,語句,否則就會(huì)產(chǎn)生編譯錯(cuò)誤。因?yàn)榫幾g器不允許連續(xù)執(zhí)否則就會(huì)產(chǎn)生編譯錯(cuò)誤。因?yàn)榫幾g器不允許連續(xù)執(zhí)行多個(gè)行

50、多個(gè)switch塊。塊。(2)switch語句語句v假如考查課的成績按優(yōu)秀、良好、中等、及格、不及格分為假如考查課的成績按優(yōu)秀、良好、中等、及格、不及格分為五等,分別用五等,分別用4,3,2,1,0來表示。但實(shí)際的考卷為百分制,來表示。但實(shí)際的考卷為百分制,分別對(duì)應(yīng)的分?jǐn)?shù)為分別對(duì)應(yīng)的分?jǐn)?shù)為90100,8090,7080,6070,60以下。以下。下面的程序?qū)⒖季沓煽兿旅娴某绦驅(qū)⒖季沓煽儀轉(zhuǎn)換為考查課的成績轉(zhuǎn)換為考查課的成績y,代碼如下:,代碼如下:int y,x=78;switch(x/10)case 10:y=4;break;case 9:y=4;break;case 8:y=3;break

51、;case 7:y=2;break;case 6:y=1;break;default:y=0;break;(2)switch語句語句該示例的執(zhí)行順序如下:該示例的執(zhí)行順序如下:先計(jì)算條件表達(dá)式(先計(jì)算條件表達(dá)式(x/10)的值,從)的值,從x初初值整除值整除10后,可得,表達(dá)式的值為后,可得,表達(dá)式的值為7。若若case標(biāo)記中的某個(gè)常數(shù)值與條件表達(dá)標(biāo)記中的某個(gè)常數(shù)值與條件表達(dá)式的值相等,執(zhí)行控制權(quán)就會(huì)傳送該式的值相等,執(zhí)行控制權(quán)就會(huì)傳送該case標(biāo)記后的語句。本實(shí)例應(yīng)執(zhí)行標(biāo)記后的語句。本實(shí)例應(yīng)執(zhí)行“case7:”后的語句,即執(zhí)行后的語句,即執(zhí)行“y=2”。2. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)v循環(huán)結(jié)構(gòu)用于在

52、一定條件下多次重復(fù)執(zhí)行一組語循環(huán)結(jié)構(gòu)用于在一定條件下多次重復(fù)執(zhí)行一組語句??梢愿鶕?jù)下列條件重復(fù)執(zhí)行語句:直到條件為句??梢愿鶕?jù)下列條件重復(fù)執(zhí)行語句:直到條件為真時(shí)直到條件為真時(shí),直到條件為假時(shí),指定的次真時(shí)直到條件為真時(shí),直到條件為假時(shí),指定的次數(shù)、集合中的每一個(gè)對(duì)象執(zhí)行一次。數(shù)、集合中的每一個(gè)對(duì)象執(zhí)行一次。vC#支持的循環(huán)結(jié)構(gòu)包括以下幾種:支持的循環(huán)結(jié)構(gòu)包括以下幾種:for語句語句foreach語句語句while語句語句dowhile語句語句(1)for語句語句v當(dāng)事先知道某個(gè)語句塊要被執(zhí)行多少次時(shí),當(dāng)事先知道某個(gè)語句塊要被執(zhí)行多少次時(shí),for循環(huán)可循環(huán)可很好地發(fā)揮作用。很好地發(fā)揮作用。fo

53、r語句的格式為:語句的格式為:for(initializer;condition;iterator) Embedded-statementv其中其中initializer、condition、iterator這三項(xiàng)都是可選項(xiàng)。這三項(xiàng)都是可選項(xiàng)。Initializer為循環(huán)控制變量做初始化,循環(huán)控制變量可以為循環(huán)控制變量做初始化,循環(huán)控制變量可以有一個(gè)或多個(gè)(用逗號(hào)隔開);有一個(gè)或多個(gè)(用逗號(hào)隔開);condition為循環(huán)控制條為循環(huán)控制條件,也可以有多個(gè)語句;件,也可以有多個(gè)語句;iterator按規(guī)律改變循環(huán)控制變按規(guī)律改變循環(huán)控制變量的值。量的值。 (1)for語句語句v下面的例子是在瀏

54、覽器中顯示數(shù)字下面的例子是在瀏覽器中顯示數(shù)字19,清楚地顯示出了清楚地顯示出了for語句是怎樣工作的:語句是怎樣工作的:for(int i=0;i10;i+) Response.write(i.ToString()+”);(1)for語句語句v下面的過程將計(jì)數(shù)器變量下面的過程將計(jì)數(shù)器變量j每次循環(huán)重復(fù)是遞增每次循環(huán)重復(fù)是遞增2。循環(huán)。循環(huán)結(jié)束后,結(jié)束后,Total為為2、4、6、8和和10的總和。的總和。public int TwoTotal() int j,Total=0; for(j=2;j=4;j=j-2) Total=Total+j; if(Total30) break; return

55、(Total);v如上例,當(dāng)如上例,當(dāng)Total的值大于的值大于30時(shí),計(jì)數(shù)器并未超過其結(jié)束值,但時(shí),計(jì)數(shù)器并未超過其結(jié)束值,但for循循環(huán)依然會(huì)終止。環(huán)依然會(huì)終止。eg5(2)foreach語句語句vforeach語句為數(shù)組或?qū)ο蠹现械拿恳粋€(gè)元素重復(fù)一個(gè)嵌入語句為數(shù)組或?qū)ο蠹现械拿恳粋€(gè)元素重復(fù)一個(gè)嵌入語句組。語句組。foreach語句用于循環(huán)訪問集合以獲取所需要的信息,語句用于循環(huán)訪問集合以獲取所需要的信息,但不應(yīng)用于更改集合內(nèi)容,以免產(chǎn)生不可預(yù)知的副作用。但不應(yīng)用于更改集合內(nèi)容,以免產(chǎn)生不可預(yù)知的副作用。此語此語句的形式如下:句的形式如下:foreach(type identifier

56、 in expression) statementv其中各參數(shù)含義如下:其中各參數(shù)含義如下:utype:identifier的類型;的類型;uidentifier:標(biāo)識(shí)符,表示集合元素的迭代變量。如果迭代變:標(biāo)識(shí)符,表示集合元素的迭代變量。如果迭代變量為值類型,則無法修改的只讀變量也是有效的;量為值類型,則無法修改的只讀變量也是有效的;uexpression:對(duì)象集合或數(shù)組表達(dá)式。集合元素的類型必須可:對(duì)象集合或數(shù)組表達(dá)式。集合元素的類型必須可以轉(zhuǎn)換為以轉(zhuǎn)換為identifier類型;類型;ustatement:要執(zhí)行的嵌入語句。:要執(zhí)行的嵌入語句。(2)foreach語句語句v當(dāng)與數(shù)組一起使

57、用時(shí),當(dāng)與數(shù)組一起使用時(shí),foreach語句為數(shù)組中的每個(gè)元素重復(fù)執(zhí)行嵌入語句為數(shù)組中的每個(gè)元素重復(fù)執(zhí)行嵌入語句。下面這個(gè)示例搜索一個(gè)整數(shù)數(shù)組中的偶數(shù)和奇數(shù),并統(tǒng)計(jì)其個(gè)數(shù)。語句。下面這個(gè)示例搜索一個(gè)整數(shù)數(shù)組中的偶數(shù)和奇數(shù),并統(tǒng)計(jì)其個(gè)數(shù)。int odd=0,even=0;int arr=new int1,2,3,4,5,6,7,8,9,10,11;foreach(int i in arr)if(i%2=0) even+;else odd+;eg7(3)dowhile語句語句v當(dāng)事先不知道需要執(zhí)行多少次循環(huán)體時(shí),可以使用當(dāng)事先不知道需要執(zhí)行多少次循環(huán)體時(shí),可以使用dowhile語句,執(zhí)行的具體次數(shù)

58、取決于條件表達(dá)式的值。可以在條件表語句,執(zhí)行的具體次數(shù)取決于條件表達(dá)式的值。可以在條件表達(dá)式為達(dá)式為True時(shí)一直重復(fù)語句。條件通常從兩個(gè)值的比較得到,時(shí)一直重復(fù)語句。條件通常從兩個(gè)值的比較得到,也可以是任何計(jì)算為布爾值(也可以是任何計(jì)算為布爾值(True或或False)的表達(dá)式。)的表達(dá)式。與與while語句不同,語句不同,do語句的體循環(huán)至少執(zhí)行一次,與語句的體循環(huán)至少執(zhí)行一次,與expression的值無關(guān)。的值無關(guān)。其語法結(jié)構(gòu)如下所示:其語法結(jié)構(gòu)如下所示:do statementwhile(expresion);v其中各參數(shù)的含義如下:其中各參數(shù)的含義如下:uexpression:一個(gè)

59、表達(dá)式,可隱式轉(zhuǎn)換為布爾類型或包含重載:一個(gè)表達(dá)式,可隱式轉(zhuǎn)換為布爾類型或包含重載True和和False運(yùn)算符的類型。此表達(dá)式用于測(cè)試循環(huán)終止條件運(yùn)算符的類型。此表達(dá)式用于測(cè)試循環(huán)終止條件ustatement:要執(zhí)行的嵌入語句:要執(zhí)行的嵌入語句(3)dowhile語句語句v下面這個(gè)程序段說明下面這個(gè)程序段說明do語句的用法:語句的用法:int x;int y=0;do x=y+; Response.Write(x.ToString()+“”);while(y5);v該程序的執(zhí)行結(jié)果是:該程序的執(zhí)行結(jié)果是:“1,2,3,4,5”。(3)dowhile語句語句注意,在下面這個(gè)程序段中,雖然條件求得

60、注意,在下面這個(gè)程序段中,雖然條件求得false值,值,但循環(huán)仍將執(zhí)行一次。但循環(huán)仍將執(zhí)行一次。int n=10;do Response.Write(“當(dāng)前當(dāng)前n的值是:的值是:”+n.ToString(); n+;while(n5);改程序段執(zhí)行的結(jié)果是:改程序段執(zhí)行的結(jié)果是:“當(dāng)前當(dāng)前n的值是:的值是:10”。(4)while語句語句v當(dāng)循環(huán)體的執(zhí)行次數(shù)不確定時(shí),還可以使用當(dāng)循環(huán)體的執(zhí)行次數(shù)不確定時(shí),還可以使用while語句,具體語句,具體執(zhí)行次數(shù)取決于條件表達(dá)式的值,只要條件為執(zhí)行次數(shù)取決于條件表達(dá)式的值,只要條件為True,則重復(fù)該,則重復(fù)該語句。語句。while語句始終在循環(huán)開始前檢查該條件,因此語句始終在循環(huán)開始前檢

溫馨提示

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

評(píng)論

0/150

提交評(píng)論