第3章C程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第3章C程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第3章C程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第3章C程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第3章C程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第3章章C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 3.1 標(biāo)識(shí)符標(biāo)識(shí)符3.2 C#中數(shù)據(jù)類(lèi)型中數(shù)據(jù)類(lèi)型3.3 C#中的變量和常量中的變量和常量3.4 類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換 3.5 結(jié)構(gòu)類(lèi)型和枚舉類(lèi)型結(jié)構(gòu)類(lèi)型和枚舉類(lèi)型3.6 C#運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式3.7 C#中常用類(lèi)和結(jié)構(gòu)中常用類(lèi)和結(jié)構(gòu)3.1 標(biāo)識(shí)符標(biāo)識(shí)符 C#的標(biāo)識(shí)符名稱(chēng)必須遵守以下規(guī)則:的標(biāo)識(shí)符名稱(chēng)必須遵守以下規(guī)則:(1)所有的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線這)所有的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線這3類(lèi)字符類(lèi)字符組成,且第一個(gè)字符必須為字母或下劃線。組成,且第一個(gè)字符必須為字母或下劃線。(2)標(biāo)識(shí)符中不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)算符等其他)標(biāo)識(shí)符

2、中不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)算符等其他符號(hào)。符號(hào)。(3)標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)。)標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)。(4)標(biāo)識(shí)符不能與)標(biāo)識(shí)符不能與C#關(guān)鍵字名相同。關(guān)鍵字名相同。(5)標(biāo)識(shí)符不能與)標(biāo)識(shí)符不能與C#中的類(lèi)庫(kù)名相同。中的類(lèi)庫(kù)名相同。 a12_c 1abc 3.2 C#中數(shù)據(jù)類(lèi)型中數(shù)據(jù)類(lèi)型C#中數(shù)據(jù)類(lèi)型分類(lèi)中數(shù)據(jù)類(lèi)型分類(lèi) 3.2.1 值類(lèi)型值類(lèi)型 值類(lèi)型的變量?jī)?nèi)含變量值本身,值類(lèi)型的變量?jī)?nèi)含變量值本身,C#的值類(lèi)型可以分為的值類(lèi)型可以分為簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)型和枚舉類(lèi)型。下面僅介紹簡(jiǎn)單類(lèi)型。簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)型和枚舉類(lèi)型。下面僅介紹簡(jiǎn)單類(lèi)型。 1. 整數(shù)類(lèi)型整數(shù)類(lèi)型2. 實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型3 字符類(lèi)型

3、字符類(lèi)型 例如,可以采用如下方式字符變量賦值:例如,可以采用如下方式字符變量賦值: char c=H ; / 字符字符H char c=x0048; / 字符字符H,十六進(jìn)制轉(zhuǎn)義符(前綴為,十六進(jìn)制轉(zhuǎn)義符(前綴為x) char c=u0048; / 字符字符H,Unicode表示形式(前綴為表示形式(前綴為u) char c=r; / 回車(chē),轉(zhuǎn)義字符回車(chē),轉(zhuǎn)義字符 在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符數(shù)量必須且只能在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符數(shù)量必須且只能是一個(gè),而且不能是單引號(hào)或者反斜杠(是一個(gè),而且不能是單引號(hào)或者反斜杠()。)。4. 布爾類(lèi)型布爾類(lèi)型 布爾類(lèi)型數(shù)據(jù)用于表示

4、邏輯真和邏輯假,布爾類(lèi)型的布爾類(lèi)型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類(lèi)型的類(lèi)型標(biāo)識(shí)符是類(lèi)型標(biāo)識(shí)符是bool。 注意:在注意:在C#語(yǔ)言中,語(yǔ)言中,bool類(lèi)型不能像類(lèi)型不能像C+語(yǔ)言那樣語(yǔ)言那樣可能直接轉(zhuǎn)換為可能直接轉(zhuǎn)換為int類(lèi)型,例如,類(lèi)型,例如,int a=(23);在在C/C+中中都是正確的,但在都是正確的,但在C中不允許這樣,會(huì)出現(xiàn)中不允許這樣,會(huì)出現(xiàn)“無(wú)法將無(wú)法將類(lèi)型類(lèi)型bool隱式轉(zhuǎn)換為隱式轉(zhuǎn)換為int”的編譯錯(cuò)誤。的編譯錯(cuò)誤。3.2.2 引用類(lèi)型引用類(lèi)型引用類(lèi)型也稱(chēng)為參考類(lèi)型。和值類(lèi)型相比,引用類(lèi)引用類(lèi)型也稱(chēng)為參考類(lèi)型。和值類(lèi)型相比,引用類(lèi)型的變量不直接存儲(chǔ)所包含的值,而是指向它

5、所要存儲(chǔ)型的變量不直接存儲(chǔ)所包含的值,而是指向它所要存儲(chǔ)的值。類(lèi)似的值。類(lèi)似C中的指針。中的指針。 1. object類(lèi)類(lèi) object是是C#中所有類(lèi)型(包括所有的值類(lèi)型和引用類(lèi)型)中所有類(lèi)型(包括所有的值類(lèi)型和引用類(lèi)型)的基類(lèi),的基類(lèi),C#中的所有類(lèi)型都直接或間接地從中的所有類(lèi)型都直接或間接地從object類(lèi)中繼承類(lèi)中繼承而來(lái)。因此,對(duì)一個(gè)而來(lái)。因此,對(duì)一個(gè)object的變量可以賦予任何類(lèi)型的值。的變量可以賦予任何類(lèi)型的值。 float f=1.23; object obj1; /定義定義obj1對(duì)象對(duì)象 obj1=f; object obj2=China;/定義定義obj2對(duì)象并賦初值對(duì)

6、象并賦初值2. string類(lèi)類(lèi) C#還定義了一個(gè)還定義了一個(gè)string類(lèi),表示一個(gè)類(lèi),表示一個(gè)Unicode字符序列,專(zhuān)門(mén)字符序列,專(zhuān)門(mén)用于對(duì)字符串的操作。同樣,這個(gè)類(lèi)也是在用于對(duì)字符串的操作。同樣,這個(gè)類(lèi)也是在.NET Framework的的命名空間命名空間System中定義的,是類(lèi)中定義的,是類(lèi)System.String的別名。的別名。字符串在實(shí)際中應(yīng)用非常廣泛,利用字符串在實(shí)際中應(yīng)用非常廣泛,利用string類(lèi)中封裝的各種類(lèi)中封裝的各種內(nèi)部操作,可以很容易完成對(duì)字符串處理。例如:內(nèi)部操作,可以很容易完成對(duì)字符串處理。例如: string str1=123+abc; /+運(yùn)算符用于連接

7、字符串運(yùn)算符用于連接字符串 char c=Hello World!2; /運(yùn)算符可以訪問(wèn)運(yùn)算符可以訪問(wèn)string中的單個(gè)字符中的單個(gè)字符,c=e string str2=China; string str3=China; / 字符串的另一種表示形式,用字符串的另一種表示形式,用引起來(lái)。引起來(lái)。 bool b=(str2=str3); /=運(yùn)算符用于兩個(gè)字符串比較,運(yùn)算符用于兩個(gè)字符串比較,b=true3.3 C#中的變量和常量中的變量和常量3.3.1 變量變量1. 變量定義變量定義 在在C#程序里使用某個(gè)變量之前,必須要告訴編譯器它程序里使用某個(gè)變量之前,必須要告訴編譯器它是一個(gè)什么樣的變量

8、,因此要對(duì)變量進(jìn)行定義。定義變量是一個(gè)什么樣的變量,因此要對(duì)變量進(jìn)行定義。定義變量的方法如下:的方法如下: 訪問(wèn)修飾符訪問(wèn)修飾符 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 變量名變量名 = 初始值初始值;例如:例如: string name=王華王華; int age=20;也可以同時(shí)聲明一個(gè)或多個(gè)給定類(lèi)型的變量,例如:也可以同時(shí)聲明一個(gè)或多個(gè)給定類(lèi)型的變量,例如: int a=1,b=2,c=3; 定義一個(gè)變量,系統(tǒng)就會(huì)在內(nèi)存中開(kāi)辟相應(yīng)大小的空定義一個(gè)變量,系統(tǒng)就會(huì)在內(nèi)存中開(kāi)辟相應(yīng)大小的空間來(lái)存放數(shù)據(jù)??梢詮南旅骈g來(lái)存放數(shù)據(jù)??梢詮南旅?個(gè)層面來(lái)理解變量。個(gè)層面來(lái)理解變量。l 變量名稱(chēng)變量名稱(chēng)l 變量的值變量的值l

9、 變量的數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型l 變量的作用域變量的作用域3.3.2 值類(lèi)型變量和引用類(lèi)型變量的區(qū)別值類(lèi)型變量和引用類(lèi)型變量的區(qū)別程序的內(nèi)存空間分為??臻g和堆空間,值類(lèi)型的數(shù)程序的內(nèi)存空間分為??臻g和堆空間,值類(lèi)型的數(shù)據(jù)在??臻g中分配,而引用類(lèi)型數(shù)據(jù)(對(duì)象)在堆空間據(jù)在??臻g中分配,而引用類(lèi)型數(shù)據(jù)(對(duì)象)在堆空間中分配。中分配。程序的執(zhí)行空間:程序的執(zhí)行空間:??臻g??臻g堆空間堆空間1. 理解值類(lèi)型的變量理解值類(lèi)型的變量C#中的值類(lèi)型變量和中的值類(lèi)型變量和C/C+語(yǔ)言中的普通變量(非指語(yǔ)言中的普通變量(非指針變量)相似,這類(lèi)變量直接包含它們的值。針變量)相似,這類(lèi)變量直接包含它們的值。C#中在

10、內(nèi)存的??臻g中為值類(lèi)型變量分配空間,而且中在內(nèi)存的??臻g中為值類(lèi)型變量分配空間,而且沒(méi)有單獨(dú)的堆分配或垃圾回收開(kāi)銷(xiāo)。因此值類(lèi)型變量會(huì)隨沒(méi)有單獨(dú)的堆分配或垃圾回收開(kāi)銷(xiāo)。因此值類(lèi)型變量會(huì)隨著方法調(diào)用后??臻g的消亡而自動(dòng)清除(著方法調(diào)用后??臻g的消亡而自動(dòng)清除(C#中的值類(lèi)型變中的值類(lèi)型變量像量像C/C+語(yǔ)言中函數(shù)內(nèi)的局部變量,函數(shù)執(zhí)行完后由系語(yǔ)言中函數(shù)內(nèi)的局部變量,函數(shù)執(zhí)行完后由系統(tǒng)釋放其存儲(chǔ)空間)。統(tǒng)釋放其存儲(chǔ)空間)。例如:例如:int x;int y=2;x=y;2. 理解引用類(lèi)型的變量理解引用類(lèi)型的變量在在C/C+語(yǔ)言中可以定義指針變量,例如:語(yǔ)言中可以定義指針變量,例如:char *p;其

11、中,其中,p是一個(gè)指針變量,其中存放某個(gè)字符變量的地是一個(gè)指針變量,其中存放某個(gè)字符變量的地址,注意變量址,注意變量p和它所指向的字符變量是兩個(gè)不同的東西。和它所指向的字符變量是兩個(gè)不同的東西。在在C#中沒(méi)有指針,而改為中沒(méi)有指針,而改為引用引用,引用表示某個(gè)對(duì)象的,引用表示某個(gè)對(duì)象的地址而不是變量或?qū)ο蟊旧怼5刂范皇亲兞炕驅(qū)ο蟊旧?。C#中引用類(lèi)型變量和其所指中引用類(lèi)型變量和其所指的對(duì)象的關(guān)系,如同前面的對(duì)象的關(guān)系,如同前面C/C+語(yǔ)言中的變量語(yǔ)言中的變量p和它所指向和它所指向的字符變量的關(guān)系。的字符變量的關(guān)系。在在C#中,無(wú)論值類(lèi)型變量還是引用類(lèi)型變量,都是在中,無(wú)論值類(lèi)型變量還是引用類(lèi)型

12、變量,都是在??臻g中分配對(duì)應(yīng)的存儲(chǔ)空間,所不同的是,引用類(lèi)型變棧空間中分配對(duì)應(yīng)的存儲(chǔ)空間,所不同的是,引用類(lèi)型變量所指向的對(duì)象是在托管堆上分配內(nèi)存空間的,為什么這量所指向的對(duì)象是在托管堆上分配內(nèi)存空間的,為什么這樣呢?先看一個(gè)簡(jiǎn)單的樣呢?先看一個(gè)簡(jiǎn)單的C/C+語(yǔ)言函數(shù):語(yǔ)言函數(shù):void fun()char *p;/定義指針變量定義指針變量pint i;/定義整型變量定義整型變量ip=(char *)malloc(10*sizeof(char);/為為p分配分配10個(gè)字符的空間個(gè)字符的空間for (i=0;ib ? a : b計(jì)算過(guò)程是,當(dāng)計(jì)算過(guò)程是,當(dāng)ab,max= a; 否則否則max=b

13、。3.6.8 其他運(yùn)算符其他運(yùn)算符1. is運(yùn)算符運(yùn)算符is運(yùn)算符用于檢查表達(dá)式是否是指定的類(lèi)型,如果是,運(yùn)算符用于檢查表達(dá)式是否是指定的類(lèi)型,如果是,其結(jié)果為其結(jié)果為true,否則結(jié)果為,否則結(jié)果為false。 2. sizeof運(yùn)算符運(yùn)算符sizeof運(yùn)算符求值類(lèi)型數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)。運(yùn)算符求值類(lèi)型數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)。sizeof運(yùn)算符的語(yǔ)法格式如下:運(yùn)算符的語(yǔ)法格式如下:sizeof(類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符)其結(jié)果為一個(gè)整數(shù),表示指定類(lèi)型的數(shù)據(jù)在內(nèi)存分配其結(jié)果為一個(gè)整數(shù),表示指定類(lèi)型的數(shù)據(jù)在內(nèi)存分配的字節(jié)數(shù)。該運(yùn)算符只能作用于值類(lèi)型或值類(lèi)型變量。的字節(jié)數(shù)。該運(yùn)算符只能作用于值類(lèi)

14、型或值類(lèi)型變量。3. typeof運(yùn)算符運(yùn)算符該運(yùn)算符用于獲得指定數(shù)據(jù)類(lèi)型的說(shuō)明。例如,若聲該運(yùn)算符用于獲得指定數(shù)據(jù)類(lèi)型的說(shuō)明。例如,若聲明了結(jié)構(gòu)明了結(jié)構(gòu)Student,則以下語(yǔ)句輸出聲明,則以下語(yǔ)句輸出聲明Student結(jié)構(gòu)類(lèi)型的結(jié)構(gòu)類(lèi)型的程序名等。程序名等。Console.WriteLine(typeof(Student);4. new運(yùn)算符運(yùn)算符該運(yùn)算符用于創(chuàng)建一個(gè)類(lèi)的對(duì)象。該運(yùn)算符用于創(chuàng)建一個(gè)類(lèi)的對(duì)象。3.6.9 運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí) 運(yùn)算符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先運(yùn)算符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先計(jì)算。計(jì)算。 C#根據(jù)運(yùn)算符的優(yōu)先級(jí)確定表達(dá)式的

15、求值順序:優(yōu)先級(jí)根據(jù)運(yùn)算符的優(yōu)先級(jí)確定表達(dá)式的求值順序:優(yōu)先級(jí)高的運(yùn)算先做,優(yōu)先級(jí)低的操作后做,相同優(yōu)先級(jí)的操作高的運(yùn)算先做,優(yōu)先級(jí)低的操作后做,相同優(yōu)先級(jí)的操作從左到右依次做,同時(shí)用小括號(hào)控制運(yùn)算順序,任何在小從左到右依次做,同時(shí)用小括號(hào)控制運(yùn)算順序,任何在小括號(hào)內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。括號(hào)內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。 3.7 C#中常用類(lèi)和結(jié)構(gòu)中常用類(lèi)和結(jié)構(gòu)C#中一切都是對(duì)象中一切都是對(duì)象 。3.7.1 String類(lèi)類(lèi) string類(lèi)型是類(lèi)型是.NET Framework中的中的String類(lèi)的別名。類(lèi)的別名。string類(lèi)型定義了相等運(yùn)算符(類(lèi)型定義了相等運(yùn)算符(=和和!=)用于比較兩個(gè))用于比較

16、兩個(gè)string對(duì)象,對(duì)象,另外,另外,+運(yùn)算符用于連接字符串,運(yùn)算符用于連接字符串,運(yùn)算符可以用來(lái)訪問(wèn)運(yùn)算符可以用來(lái)訪問(wèn)string中的各個(gè)字符。中的各個(gè)字符。 【例【例3.7】 設(shè)計(jì)一個(gè)控制臺(tái)程序求用戶(hù)輸入的子串在主串中位置。設(shè)計(jì)一個(gè)控制臺(tái)程序求用戶(hù)輸入的子串在主串中位置。using System;namespace Proj3_6 class Program static void Main(string args) String mstr,sstr; Console.Write(輸入主串輸入主串:); mstr = Console.ReadLine(); Console.Write(輸

17、入子串輸入子串:); sstr = Console.ReadLine(); Console.WriteLine(主串長(zhǎng)度主串長(zhǎng)度=0,子串長(zhǎng)度子串長(zhǎng)度=1, mstr.Length, sstr.Length); if (String.Compare(mstr, sstr) != 0) /使用靜態(tài)方法使用靜態(tài)方法 Console.WriteLine(位置位置:0, mstr.IndexOf(sstr); else Console.WriteLine(兩個(gè)字符串相同兩個(gè)字符串相同); 3.7.2 Math類(lèi)類(lèi) Math類(lèi)位于類(lèi)位于System命名空間中,它包含了實(shí)現(xiàn)命名空間中,它包含了實(shí)現(xiàn)C#中中

18、常用算術(shù)運(yùn)算功能的方法,這些方法都是靜態(tài)方法,可通常用算術(shù)運(yùn)算功能的方法,這些方法都是靜態(tài)方法,可通過(guò)過(guò)“Math.方法名方法名(參數(shù)參數(shù))”來(lái)使用。來(lái)使用。3.7.3 Convert類(lèi)類(lèi)Convert類(lèi)位于類(lèi)位于System命名空間中,用于將一個(gè)值類(lèi)命名空間中,用于將一個(gè)值類(lèi)型轉(zhuǎn)換成另一個(gè)值類(lèi)型。這些方法都是靜態(tài)方法,可通型轉(zhuǎn)換成另一個(gè)值類(lèi)型。這些方法都是靜態(tài)方法,可通過(guò)過(guò)“Convert.方法名方法名(參數(shù)參數(shù))”來(lái)使用。來(lái)使用。3.7.4 DateTime結(jié)構(gòu)結(jié)構(gòu) DateTime結(jié)構(gòu)類(lèi)位于結(jié)構(gòu)類(lèi)位于System命名空間中,命名空間中,DateTime值值類(lèi)型表示值范圍在公元類(lèi)型表示值范

19、圍在公元0001年年1月月1日午夜日午夜12:00:00到公元到公元9999年年12月月31日晚上日晚上11:59:59之間的日期和時(shí)間。之間的日期和時(shí)間。 可以通過(guò)以下語(yǔ)法格式定義一個(gè)日期時(shí)間變量:可以通過(guò)以下語(yǔ)法格式定義一個(gè)日期時(shí)間變量: DateTime 日期時(shí)間變量日期時(shí)間變量 = new DateTime(年年,月月,日日,時(shí)時(shí),分分,秒秒);例如,以下語(yǔ)句定義了例如,以下語(yǔ)句定義了2個(gè)日期時(shí)間變量:個(gè)日期時(shí)間變量: DateTime d1 = new DateTime(2009,10,1); DateTime d2 = new DateTime(2009,10,1,8,15,20); 其中,其中,d1的值為的值為2009年年10月月1日零點(diǎn)零分零秒,日零點(diǎn)零分零秒,d2的值的值為為2009年年10月月1日日8點(diǎn)點(diǎn)15分分20秒。秒?!纠纠?.8】 設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明DataTime結(jié)構(gòu)的使用。結(jié)構(gòu)的使用。 using System;namespace Proj3_7

溫馨提示

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

評(píng)論

0/150

提交評(píng)論