




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第3章章C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 3.1 標(biāo)識符標(biāo)識符3.2 C#中數(shù)據(jù)類型中數(shù)據(jù)類型3.3 C#中的變量和常量中的變量和常量3.4 類型轉(zhuǎn)換類型轉(zhuǎn)換 3.5 結(jié)構(gòu)類型和枚舉類型結(jié)構(gòu)類型和枚舉類型3.6 C#運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式3.7 C#中常用類和結(jié)構(gòu)中常用類和結(jié)構(gòu)3.1 標(biāo)識符標(biāo)識符 C#的標(biāo)識符名稱必須遵守以下規(guī)則:的標(biāo)識符名稱必須遵守以下規(guī)則:(1)所有的標(biāo)識符只能由字母、數(shù)字和下劃線這)所有的標(biāo)識符只能由字母、數(shù)字和下劃線這3類字符類字符組成,且第一個字符必須為字母或下劃線。組成,且第一個字符必須為字母或下劃線。(2)標(biāo)識符中不能包含空格、標(biāo)點(diǎn)符號、運(yùn)算符等其他)標(biāo)識符
2、中不能包含空格、標(biāo)點(diǎn)符號、運(yùn)算符等其他符號。符號。(3)標(biāo)識符嚴(yán)格區(qū)分大小寫。)標(biāo)識符嚴(yán)格區(qū)分大小寫。(4)標(biāo)識符不能與)標(biāo)識符不能與C#關(guān)鍵字名相同。關(guān)鍵字名相同。(5)標(biāo)識符不能與)標(biāo)識符不能與C#中的類庫名相同。中的類庫名相同。 a12_c 1abc 3.2 C#中數(shù)據(jù)類型中數(shù)據(jù)類型C#中數(shù)據(jù)類型分類中數(shù)據(jù)類型分類 3.2.1 值類型值類型 值類型的變量內(nèi)含變量值本身,值類型的變量內(nèi)含變量值本身,C#的值類型可以分為的值類型可以分為簡單類型、結(jié)構(gòu)類型和枚舉類型。下面僅介紹簡單類型。簡單類型、結(jié)構(gòu)類型和枚舉類型。下面僅介紹簡單類型。 1. 整數(shù)類型整數(shù)類型2. 實(shí)數(shù)類型實(shí)數(shù)類型3 字符類型
3、字符類型 例如,可以采用如下方式字符變量賦值:例如,可以采用如下方式字符變量賦值: 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; / 回車,轉(zhuǎn)義字符回車,轉(zhuǎn)義字符 在表示一個字符常數(shù)時,單引號內(nèi)的有效字符數(shù)量必須且只能在表示一個字符常數(shù)時,單引號內(nèi)的有效字符數(shù)量必須且只能是一個,而且不能是單引號或者反斜杠(是一個,而且不能是單引號或者反斜杠()。)。4. 布爾類型布爾類型 布爾類型數(shù)據(jù)用于表示
4、邏輯真和邏輯假,布爾類型的布爾類型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類型的類型標(biāo)識符是類型標(biāo)識符是bool。 注意:在注意:在C#語言中,語言中,bool類型不能像類型不能像C+語言那樣語言那樣可能直接轉(zhuǎn)換為可能直接轉(zhuǎn)換為int類型,例如,類型,例如,int a=(23);在在C/C+中中都是正確的,但在都是正確的,但在C中不允許這樣,會出現(xiàn)中不允許這樣,會出現(xiàn)“無法將無法將類型類型bool隱式轉(zhuǎn)換為隱式轉(zhuǎn)換為int”的編譯錯誤。的編譯錯誤。3.2.2 引用類型引用類型引用類型也稱為參考類型。和值類型相比,引用類引用類型也稱為參考類型。和值類型相比,引用類型的變量不直接存儲所包含的值,而是指向它
5、所要存儲型的變量不直接存儲所包含的值,而是指向它所要存儲的值。類似的值。類似C中的指針。中的指針。 1. object類類 object是是C#中所有類型(包括所有的值類型和引用類型)中所有類型(包括所有的值類型和引用類型)的基類,的基類,C#中的所有類型都直接或間接地從中的所有類型都直接或間接地從object類中繼承類中繼承而來。因此,對一個而來。因此,對一個object的變量可以賦予任何類型的值。的變量可以賦予任何類型的值。 float f=1.23; object obj1; /定義定義obj1對象對象 obj1=f; object obj2=China;/定義定義obj2對象并賦初值對
6、象并賦初值2. string類類 C#還定義了一個還定義了一個string類,表示一個類,表示一個Unicode字符序列,專門字符序列,專門用于對字符串的操作。同樣,這個類也是在用于對字符串的操作。同樣,這個類也是在.NET Framework的的命名空間命名空間System中定義的,是類中定義的,是類System.String的別名。的別名。字符串在實(shí)際中應(yīng)用非常廣泛,利用字符串在實(shí)際中應(yīng)用非常廣泛,利用string類中封裝的各種類中封裝的各種內(nèi)部操作,可以很容易完成對字符串處理。例如:內(nèi)部操作,可以很容易完成對字符串處理。例如: string str1=123+abc; /+運(yùn)算符用于連接
7、字符串運(yùn)算符用于連接字符串 char c=Hello World!2; /運(yùn)算符可以訪問運(yùn)算符可以訪問string中的單個字符中的單個字符,c=e string str2=China; string str3=China; / 字符串的另一種表示形式,用字符串的另一種表示形式,用引起來。引起來。 bool b=(str2=str3); /=運(yùn)算符用于兩個字符串比較,運(yùn)算符用于兩個字符串比較,b=true3.3 C#中的變量和常量中的變量和常量3.3.1 變量變量1. 變量定義變量定義 在在C#程序里使用某個變量之前,必須要告訴編譯器它程序里使用某個變量之前,必須要告訴編譯器它是一個什么樣的變量
8、,因此要對變量進(jìn)行定義。定義變量是一個什么樣的變量,因此要對變量進(jìn)行定義。定義變量的方法如下:的方法如下: 訪問修飾符訪問修飾符 數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名 = 初始值初始值;例如:例如: string name=王華王華; int age=20;也可以同時聲明一個或多個給定類型的變量,例如:也可以同時聲明一個或多個給定類型的變量,例如: int a=1,b=2,c=3; 定義一個變量,系統(tǒng)就會在內(nèi)存中開辟相應(yīng)大小的空定義一個變量,系統(tǒng)就會在內(nèi)存中開辟相應(yīng)大小的空間來存放數(shù)據(jù)??梢詮南旅骈g來存放數(shù)據(jù)??梢詮南旅?個層面來理解變量。個層面來理解變量。l 變量名稱變量名稱l 變量的值變量的值l
9、 變量的數(shù)據(jù)類型變量的數(shù)據(jù)類型l 變量的作用域變量的作用域3.3.2 值類型變量和引用類型變量的區(qū)別值類型變量和引用類型變量的區(qū)別程序的內(nèi)存空間分為棧空間和堆空間,值類型的數(shù)程序的內(nèi)存空間分為棧空間和堆空間,值類型的數(shù)據(jù)在??臻g中分配,而引用類型數(shù)據(jù)(對象)在堆空間據(jù)在棧空間中分配,而引用類型數(shù)據(jù)(對象)在堆空間中分配。中分配。程序的執(zhí)行空間:程序的執(zhí)行空間:??臻g??臻g堆空間堆空間1. 理解值類型的變量理解值類型的變量C#中的值類型變量和中的值類型變量和C/C+語言中的普通變量(非指語言中的普通變量(非指針變量)相似,這類變量直接包含它們的值。針變量)相似,這類變量直接包含它們的值。C#中在
10、內(nèi)存的??臻g中為值類型變量分配空間,而且中在內(nèi)存的棧空間中為值類型變量分配空間,而且沒有單獨(dú)的堆分配或垃圾回收開銷。因此值類型變量會隨沒有單獨(dú)的堆分配或垃圾回收開銷。因此值類型變量會隨著方法調(diào)用后??臻g的消亡而自動清除(著方法調(diào)用后棧空間的消亡而自動清除(C#中的值類型變中的值類型變量像量像C/C+語言中函數(shù)內(nèi)的局部變量,函數(shù)執(zhí)行完后由系語言中函數(shù)內(nèi)的局部變量,函數(shù)執(zhí)行完后由系統(tǒng)釋放其存儲空間)。統(tǒng)釋放其存儲空間)。例如:例如:int x;int y=2;x=y;2. 理解引用類型的變量理解引用類型的變量在在C/C+語言中可以定義指針變量,例如:語言中可以定義指針變量,例如:char *p;其
11、中,其中,p是一個指針變量,其中存放某個字符變量的地是一個指針變量,其中存放某個字符變量的地址,注意變量址,注意變量p和它所指向的字符變量是兩個不同的東西。和它所指向的字符變量是兩個不同的東西。在在C#中沒有指針,而改為中沒有指針,而改為引用引用,引用表示某個對象的,引用表示某個對象的地址而不是變量或?qū)ο蟊旧?。地址而不是變量或?qū)ο蟊旧?。C#中引用類型變量和其所指中引用類型變量和其所指的對象的關(guān)系,如同前面的對象的關(guān)系,如同前面C/C+語言中的變量語言中的變量p和它所指向和它所指向的字符變量的關(guān)系。的字符變量的關(guān)系。在在C#中,無論值類型變量還是引用類型變量,都是在中,無論值類型變量還是引用類型
12、變量,都是在棧空間中分配對應(yīng)的存儲空間,所不同的是,引用類型變??臻g中分配對應(yīng)的存儲空間,所不同的是,引用類型變量所指向的對象是在托管堆上分配內(nèi)存空間的,為什么這量所指向的對象是在托管堆上分配內(nèi)存空間的,為什么這樣呢?先看一個簡單的樣呢?先看一個簡單的C/C+語言函數(shù):語言函數(shù):void fun()char *p;/定義指針變量定義指針變量pint i;/定義整型變量定義整型變量ip=(char *)malloc(10*sizeof(char);/為為p分配分配10個字符的空間個字符的空間for (i=0;ib ? a : b計(jì)算過程是,當(dāng)計(jì)算過程是,當(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á)式是否是指定的類型,如果是,運(yùn)算符用于檢查表達(dá)式是否是指定的類型,如果是,其結(jié)果為其結(jié)果為true,否則結(jié)果為,否則結(jié)果為false。 2. sizeof運(yùn)算符運(yùn)算符sizeof運(yùn)算符求值類型數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)。運(yùn)算符求值類型數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)。sizeof運(yùn)算符的語法格式如下:運(yùn)算符的語法格式如下:sizeof(類型標(biāo)識符類型標(biāo)識符)其結(jié)果為一個整數(shù),表示指定類型的數(shù)據(jù)在內(nèi)存分配其結(jié)果為一個整數(shù),表示指定類型的數(shù)據(jù)在內(nèi)存分配的字節(jié)數(shù)。該運(yùn)算符只能作用于值類型或值類型變量。的字節(jié)數(shù)。該運(yùn)算符只能作用于值類
14、型或值類型變量。3. typeof運(yùn)算符運(yùn)算符該運(yùn)算符用于獲得指定數(shù)據(jù)類型的說明。例如,若聲該運(yùn)算符用于獲得指定數(shù)據(jù)類型的說明。例如,若聲明了結(jié)構(gòu)明了結(jié)構(gòu)Student,則以下語句輸出聲明,則以下語句輸出聲明Student結(jié)構(gòu)類型的結(jié)構(gòu)類型的程序名等。程序名等。Console.WriteLine(typeof(Student);4. new運(yùn)算符運(yùn)算符該運(yùn)算符用于創(chuàng)建一個類的對象。該運(yùn)算符用于創(chuàng)建一個類的對象。3.6.9 運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級 運(yùn)算符的優(yōu)先級是指在表達(dá)式中哪一個運(yùn)算符應(yīng)該首先運(yùn)算符的優(yōu)先級是指在表達(dá)式中哪一個運(yùn)算符應(yīng)該首先計(jì)算。計(jì)算。 C#根據(jù)運(yùn)算符的優(yōu)先級確定表達(dá)式的
15、求值順序:優(yōu)先級根據(jù)運(yùn)算符的優(yōu)先級確定表達(dá)式的求值順序:優(yōu)先級高的運(yùn)算先做,優(yōu)先級低的操作后做,相同優(yōu)先級的操作高的運(yùn)算先做,優(yōu)先級低的操作后做,相同優(yōu)先級的操作從左到右依次做,同時用小括號控制運(yùn)算順序,任何在小從左到右依次做,同時用小括號控制運(yùn)算順序,任何在小括號內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。括號內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。 3.7 C#中常用類和結(jié)構(gòu)中常用類和結(jié)構(gòu)C#中一切都是對象中一切都是對象 。3.7.1 String類類 string類型是類型是.NET Framework中的中的String類的別名。類的別名。string類型定義了相等運(yùn)算符(類型定義了相等運(yùn)算符(=和和!=)用于比較兩個)用于比較
16、兩個string對象,對象,另外,另外,+運(yùn)算符用于連接字符串,運(yùn)算符用于連接字符串,運(yùn)算符可以用來訪問運(yùn)算符可以用來訪問string中的各個字符。中的各個字符。 【例【例3.7】 設(shè)計(jì)一個控制臺程序求用戶輸入的子串在主串中位置。設(shè)計(jì)一個控制臺程序求用戶輸入的子串在主串中位置。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(主串長度主串長度=0,子串長度子串長度=1, mstr.Length, sstr.Length); if (String.Compare(mstr, sstr) != 0) /使用靜態(tài)方法使用靜態(tài)方法 Console.WriteLine(位置位置:0, mstr.IndexOf(sstr); else Console.WriteLine(兩個字符串相同兩個字符串相同); 3.7.2 Math類類 Math類位于類位于System命名空間中,它包含了實(shí)現(xiàn)命名空間中,它包含了實(shí)現(xiàn)C#中中
18、常用算術(shù)運(yùn)算功能的方法,這些方法都是靜態(tài)方法,可通常用算術(shù)運(yùn)算功能的方法,這些方法都是靜態(tài)方法,可通過過“Math.方法名方法名(參數(shù)參數(shù))”來使用。來使用。3.7.3 Convert類類Convert類位于類位于System命名空間中,用于將一個值類命名空間中,用于將一個值類型轉(zhuǎn)換成另一個值類型。這些方法都是靜態(tài)方法,可通型轉(zhuǎn)換成另一個值類型。這些方法都是靜態(tài)方法,可通過過“Convert.方法名方法名(參數(shù)參數(shù))”來使用。來使用。3.7.4 DateTime結(jié)構(gòu)結(jié)構(gòu) DateTime結(jié)構(gòu)類位于結(jié)構(gòu)類位于System命名空間中,命名空間中,DateTime值值類型表示值范圍在公元類型表示值范
19、圍在公元0001年年1月月1日午夜日午夜12:00:00到公元到公元9999年年12月月31日晚上日晚上11:59:59之間的日期和時間。之間的日期和時間。 可以通過以下語法格式定義一個日期時間變量:可以通過以下語法格式定義一個日期時間變量: DateTime 日期時間變量日期時間變量 = new DateTime(年年,月月,日日,時時,分分,秒秒);例如,以下語句定義了例如,以下語句定義了2個日期時間變量:個日期時間變量: 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秒。秒。【例【例3.8】 設(shè)計(jì)一個控制臺程序說明設(shè)計(jì)一個控制臺程序說明DataTime結(jié)構(gòu)的使用。結(jié)構(gòu)的使用。 using System;namespace Proj3_7
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川鍍鋅飼料塔施工方案
- 蘇州拆除加固工程施工方案
- 湖南都市職業(yè)學(xué)院《電氣工程制圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都文理學(xué)院《核電廠運(yùn)行仿真實(shí)驗(yàn)(Ⅱ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南鐵道職業(yè)技術(shù)學(xué)院《馬克思主義政治學(xué)經(jīng)典著作》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都九年級月考數(shù)學(xué)試卷
- 珠海城市職業(yè)技術(shù)學(xué)院《礦山環(huán)保與安全工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 腹腔分流術(shù)護(hù)理
- 東南大學(xué)成賢學(xué)院《結(jié)構(gòu)可靠性分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江電力職業(yè)技術(shù)學(xué)院《動態(tài)速寫》2023-2024學(xué)年第二學(xué)期期末試卷
- 維修派工單模板
- 各類導(dǎo)管的護(hù)理
- 大空間大跨度火災(zāi)撲救
- 2023年推廣羊奶粉的廣告說詞 羊奶粉廣告文案(三篇)
- 專職消防員考察政審表參考模板范本
- 教練場地技術(shù)條件說明
- 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(錢鋒) 項(xiàng)目四簡介
- 石大體育學(xué)院專題講座:教練員職業(yè)素養(yǎng)及管理
- 《LNG操作手冊》(完整版)資料
- 各類作業(yè)十不準(zhǔn)禁令匯總大全
- 磁懸浮鐵路課件
評論
0/150
提交評論