第3章+C#面向?qū)ο缶幊?9(課件)-《算法與程序設(shè)計(jì)-C#》同步教學(xué)(清華大學(xué)版)_第1頁
第3章+C#面向?qū)ο缶幊?9(課件)-《算法與程序設(shè)計(jì)-C#》同步教學(xué)(清華大學(xué)版)_第2頁
第3章+C#面向?qū)ο缶幊?9(課件)-《算法與程序設(shè)計(jì)-C#》同步教學(xué)(清華大學(xué)版)_第3頁
第3章+C#面向?qū)ο缶幊?9(課件)-《算法與程序設(shè)計(jì)-C#》同步教學(xué)(清華大學(xué)版)_第4頁
第3章+C#面向?qū)ο缶幊?9(課件)-《算法與程序設(shè)計(jì)-C#》同步教學(xué)(清華大學(xué)版)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C#程序設(shè)計(jì)

第3章C#面向?qū)ο缶幊?結(jié)構(gòu)和枚舉枚舉結(jié)構(gòu)★掌握枚舉的聲明和使用掌握結(jié)構(gòu)的聲明和使用理解結(jié)構(gòu)和類的區(qū)別3什么是結(jié)構(gòu)什么是結(jié)構(gòu)?把一系列相關(guān)的變量組織成單一實(shí)體的過程,在C#中稱為生成結(jié)構(gòu)的過程。這個(gè)單一實(shí)體的類型就叫做結(jié)構(gòu)類型,每一個(gè)變量稱為結(jié)構(gòu)的成員。結(jié)構(gòu)可視為輕量級(jí)的類,在需要一個(gè)小的數(shù)據(jù)結(jié)構(gòu)時(shí),最好使用結(jié)構(gòu)410.1.2結(jié)構(gòu)的聲明結(jié)構(gòu)的聲明publicstructStudent{publicstringstudentName,studentID;publicintAge;

publicvoidSayHi(){….}}訪問修飾符struct

結(jié)構(gòu)名{

定義結(jié)構(gòu)成員}構(gòu)成和類相似定義成員變量不能賦初值成員方法常量;字段;方法屬性事件索引器運(yùn)算符重載帶參數(shù)構(gòu)造函數(shù)嵌套結(jié)構(gòu)5結(jié)構(gòu)成員注意:結(jié)構(gòu)不支持繼承,所以結(jié)構(gòu)成員的可訪問性不能是protected或protectedinternal結(jié)構(gòu)中的函數(shù)成員不能是abstract或virtual,override修飾符只適用于重寫從System.ValueType繼承的方法結(jié)構(gòu)不能聲明默認(rèn)構(gòu)造函數(shù)(編譯器提供)或析構(gòu)函數(shù)編譯器提供默認(rèn)構(gòu)造函數(shù)以將結(jié)構(gòu)成員初始化為它們的默認(rèn)值不允許它的實(shí)例字段聲明時(shí)初始化,但常量和靜態(tài)字段可以聲明時(shí)初始化6結(jié)構(gòu)調(diào)用使用new運(yùn)算符創(chuàng)建結(jié)構(gòu)變量結(jié)構(gòu)名結(jié)構(gòu)變量名=new結(jié)構(gòu)名([參數(shù)表]);聲明變量,然后初始化結(jié)構(gòu)的字段結(jié)構(gòu)類型結(jié)構(gòu)變量;結(jié)構(gòu)變量名.字段名=初始值;在沒有完全初始化所有字段之前,結(jié)構(gòu)變量都被看成是未賦值的,因此不能引用其未賦值的字段和函數(shù)成員7

…StudentmyStu=newStudent("張靚靚",“201101”,20);myStu.SayHi();…structStudent{…publicStudent(stringname,stringid,intage){this.studentName=name;this.studentID=id;…}}可以有構(gòu)造函數(shù)只能聲明有參數(shù)的構(gòu)造函數(shù),并且要實(shí)例化所有實(shí)例字段。構(gòu)造函數(shù)傳參8…StudentmyStu;myStu.Age=20;myStu.studentName="張靚靚";myStu.studentID=“201102";myStu.SayHi();…定義結(jié)構(gòu)可以不用new為結(jié)構(gòu)成員賦值調(diào)用結(jié)構(gòu)的方法9結(jié)構(gòu)和類的區(qū)別與聯(lián)系結(jié)構(gòu)與類很相似,均為包含數(shù)據(jù)成員和函數(shù)成員的數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)可視為輕量級(jí)的類,在需要一個(gè)小的數(shù)據(jù)結(jié)構(gòu)時(shí),最好使用結(jié)構(gòu)結(jié)構(gòu)是存儲(chǔ)在堆棧上的值類型可以通過裝箱/拆箱操作,實(shí)現(xiàn)與object類型或由該結(jié)構(gòu)實(shí)現(xiàn)的接口類型之間的轉(zhuǎn)換.Net內(nèi)建的基本數(shù)據(jù)類型均采用結(jié)構(gòu)實(shí)現(xiàn)10理解結(jié)構(gòu)與類的區(qū)別結(jié)構(gòu)是值類型-直接存儲(chǔ)值student1studnet2Age=18student1student1.Age=18Age=18Agestudent2=student1student1.Age

student1studnet2Age=18Age=20student2.Age=2011理解結(jié)構(gòu)與類的區(qū)別student1student1.Age=18Age=18類是引用類型-存儲(chǔ)對(duì)值的引用student1studnet2student2=student1student1.Age

兩個(gè)變量都發(fā)生變化Age=20student1studnet2student2.Age=2012理解結(jié)構(gòu)與類的區(qū)別都可以實(shí)現(xiàn)接口都可以包含字段、方法相同點(diǎn)結(jié)構(gòu)中給實(shí)例字段賦值是錯(cuò)誤的類中可以給字段賦值創(chuàng)建對(duì)象可以不用new創(chuàng)建對(duì)象必須使用new可以添加構(gòu)造函數(shù),但它們必須帶參數(shù)可以添加無參的構(gòu)造函數(shù)不可以有默認(rèn)構(gòu)造函數(shù)及析構(gòu)函數(shù)可以有默認(rèn)構(gòu)造及析構(gòu)函數(shù)不能被繼承可以被繼承值類型引用類型不同點(diǎn)結(jié)構(gòu)類

13使用類版Student和結(jié)構(gòu)版Student實(shí)現(xiàn)下面操作staticvoidMain(string[]args){//使用值類型

StructStudentstudent1=newStructStudent();StructStudentstudent2=newStructStudent();student1.Age=18;student2=student1;student2.Age=20;Console.WriteLine("student1={0},student2={1}",student1.Age,student2.Age);}staticvoidMain(string[]args){//使用引用類型

Studentstudent1=newStudent();Studentstudent2=newStudent();student1.Age=18;student2=student1;student2.Age=20;Console.WriteLine("student1={0},student2={1}",student1.Age,student2.Age);}14結(jié)構(gòu)嵌套在編譯單元或命名空間內(nèi)聲明的結(jié)構(gòu)稱為頂級(jí)結(jié)構(gòu)結(jié)構(gòu)可以嵌套在頂級(jí)類或頂級(jí)結(jié)構(gòu)中字段必須完全賦值1516枚舉類型★17隨意賦值的危險(xiǎn)…//性別privatestringgender;publicstringGender{get{returngender;}set{gender=value;}}用常量給屬性賦值:student.Gender=GENDER_M;這樣給屬性賦值:student.Gender=“China";為Student類添加性別的屬性,用常量賦值有違常理,非法數(shù)據(jù)conststringGENDER_M="男";conststringGENDER_F="女";18枚舉枚舉類型也是一種自定義的值類型,用于聲明一組命名的常量,它允許用符號(hào)代表數(shù)據(jù),使得值易于記憶。使用枚舉比使用無格式的整數(shù)有三個(gè)優(yōu)勢:枚舉使代碼更易于維護(hù)枚舉使代碼更清晰枚舉使代碼更容易鍵入19枚舉的聲明和使用枚舉的聲明:[枚舉修飾符]

enum枚舉名

[:基礎(chǔ)類型]{枚舉體}[;]枚舉的使用:枚舉名.枚舉成員;默認(rèn)基礎(chǔ)類型:int各元素以逗號(hào)分隔枚舉類型名變量名=枚舉類型名.成員enumSeason{spring,summer,auturm,winter}enumSeason{spring,summer,autum,winter}20用一種新的類型定義enumpublicenumGenders{Male,Female}//性別privateGendersgender;publicGendersGender{get{returngender;}set{gender=value;}}這樣給屬性賦值:student.Gender=Genders.Male;如果這樣屬性賦值:student.Gender=“China";類型不同不能賦值性別屬性的類型Genders是一個(gè)枚舉類型代碼錯(cuò)誤21枚舉的關(guān)聯(lián)值默認(rèn)第一個(gè)枚舉成員的關(guān)聯(lián)值為0,按“1”遞增可以自定義每個(gè)枚舉成員相關(guān)聯(lián)的常量值,但必須在該枚舉的基礎(chǔ)類型的范圍內(nèi)多個(gè)枚舉成員可共享同一個(gè)關(guān)聯(lián)值enumSeason{spring,summer,autumn,winter}0123enumSeason

{spring,summer=10,auturm,winter=summer}22注意枚舉不能是抽象的,也不允許派生在枚舉聲明中不能使用abstract和sealed修飾符枚舉有基礎(chǔ)類型(整型),默認(rèn)為int,可以聲明為byte,sbyte,short,ushort,int,uint,long,ulong作為基礎(chǔ)類型,char除外任意兩個(gè)枚舉成員不能具有相同的名稱,關(guān)聯(lián)值可以相同。23枚舉和整數(shù)值的相互轉(zhuǎn)換將枚舉型變量的值賦值給整型變量必須進(jìn)行顯式類型轉(zhuǎn)換enumSeason{spring,summer,auturm,winter}staticvoidMain(string[]args){int

溫馨提示

  • 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)論