版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章,用對象思考:值類型和引用類型,回顧,class Student private string Study(string name) / private int Study(string name) / ,屬性中g(shù)et和set訪問器可以單獨(dú)存在么?,返回值不同的兩個(gè)方法不能重載,預(yù)習(xí)檢查,結(jié)構(gòu)是值類型還是引用類型? 結(jié)構(gòu)是否可以添加無參的構(gòu)造函數(shù)?,本章任務(wù),分別用結(jié)構(gòu)和類實(shí)現(xiàn)Student對象 體會值類型與引用類型的區(qū)別,熟練掌握常量、枚舉、結(jié)構(gòu)的使用 理解值類型與引用類型的概念 理解值類型與引用類型作為參數(shù)時(shí)的區(qū)別,本章目標(biāo),數(shù)據(jù)類型回顧,常用的數(shù)據(jù)類型有哪些?,為什么使用常量,pu
2、blic class Compute double pi = 3.14; /計(jì)算圓的周長 public double Perimeter(double radius) return 2 * pi * radius; /計(jì)算圓的面積 public double Area(double radius) return pi * radius * radius; ,這個(gè)類中,會反復(fù)使用pi,如果pi在類中被修改了,計(jì)算結(jié)果錯(cuò)誤,如何避免pi在類中被修改?,常量,常量在使用過程中值不會發(fā)生變化 常量程序中反復(fù)使用,const 類型 常量名 = 常量值,程序中不會被改變,static void Main(
3、string args) const int PI = 3.14; PI = 3.20; ,強(qiáng)制賦值會發(fā)生錯(cuò)誤,常量名通常使用大寫,隨意賦值的危險(xiǎn),const string GENDER_M = 男; const string GENDER_F = 女; / 性別 private string gender; public string Gender get return gender; set gender = value; ,用常量給屬性賦值: student.Gender = GENDER_M;,也可以這樣給屬性賦值: student.Gender = ACCP;,為Student類添加
4、性別的屬性,用常量賦值,有違常理,非法數(shù)據(jù),演示示例1:MyEnum,什么是枚舉,用一種新的類型定義enum,public enum Genders Male, Female / 性別 private Genders gender; public Genders Gender get return gender; set gender = value; ,這樣給屬性賦值: student.Gender = Genders.Male;,如果這樣屬性賦值: student.Gender = ACCP;,類型不同不能賦值,性別屬性的類型,Genders是一個(gè)枚舉類型,代碼錯(cuò)誤,枚舉定義,枚舉是一組描
5、述性的名稱 枚舉定義一組有限的值,不能包含方法 對可能的值進(jìn)行約束 枚舉允許描述性名稱表示整數(shù)值,訪問修飾符 enum 枚舉名 值1,值2 ,public enum Accp S1,S2,Y2 ,我們不會輸入S3,Y3,public enum WeekDays S1=1,S2=2,S3=3 / Console.WriteLine(的整數(shù)值是0.,(int)(Accp.S2);,取得枚舉表示的整數(shù)值,枚舉與其它類型的轉(zhuǎn)換,枚舉轉(zhuǎn)換為字符串 字符串轉(zhuǎn)換為枚舉,public enum Accp S1 ,S2,Y2 / Console.WriteLine(S2的值是0.,Accp.S2.ToStrin
6、g();,(Accp)(Enum.Parse(typeof(Accp),S2);,需要轉(zhuǎn)換的字符串,枚舉的特點(diǎn),汽車類有一個(gè)成員是車身顏色,static void Main(string args) string color = new string red, black, write ; Console.WriteLine(我要選擇的顏色是:0,color0); ,使用時(shí),必須了解數(shù)組的構(gòu)成,枚舉可以用描述性的名稱表示值,使用時(shí)無需了解它的構(gòu)成,private enum color red,write,black static void Main(string args) Console.W
7、riteLine(我要選擇的顏色是:0, color.red); ,枚舉,枚舉的典型應(yīng)用,DialogResult choice; choice = MessageBox.Show(確定要退出嗎?, 退出系統(tǒng), MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if(choice = DialogResult.OK) Application.Exit();,DialogResult是個(gè)枚舉,指示對話框的返回值,這樣我們就不會判斷一些非法的值,導(dǎo)致系統(tǒng)異常,為什么需要結(jié)構(gòu),有很多預(yù)定義顏色,正常人眼可分辨的顏色種類可達(dá)幾十萬種以上
8、Color提供使用RGB值返回顏色的方法 FromArgb(),System.Drawing.Color有很多顏色值,它是一個(gè)枚舉嗎?,System.Drawing.Color是一個(gè)結(jié)構(gòu),結(jié)構(gòu)定義,結(jié)構(gòu)中有屬性,也可以有方法,public struct StructStudent public string Name; public int Age; public string Hobby; public int Popularity; public void SayHi() / . ,訪問修飾符 struct 結(jié)構(gòu)名 定義結(jié)構(gòu)成員 ,構(gòu)成和類相似,定義成員變量不能賦初值,成員方法,/ Str
9、uctStudent myStu; myStu.Age = 20; myStu.Gender = Genders.Female; myStu.Hobby = 唱歌歌; myStu.Name = 張靚靚; myStu.Popularity = 100; myStu.SayHi(); /,結(jié)構(gòu)的使用2-1,定義結(jié)構(gòu)可以不用new,為結(jié)構(gòu)成員賦值,調(diào)用結(jié)構(gòu)的方法,演示示例2:MyStruct,運(yùn)行結(jié)果和第二章的SayHi相同,/ StructStudent myStu = new StructStudent(張靚靚, Genders.Female, 20, 唱歌歌, 100); myStu.SayH
10、i(); /,結(jié)構(gòu)的使用2-2,struct StructStudent / public StructStudent(string name, Genders gender, int age, string hobby, int popularity) this.Name = name; this.Gender = gender; / ,可以有構(gòu)造函數(shù),只能聲明有參數(shù)的構(gòu)造函數(shù),構(gòu)造函數(shù)傳參,理解結(jié)構(gòu)與類的區(qū)別,小結(jié),編寫一個(gè)存儲老師屬性的結(jié)構(gòu) 結(jié)構(gòu)名稱TeacherStruct 姓名(teacherName) 年齡(teacherAge) 參加工作的年限(yearsOfService) S
11、ayHi方法(大家好,我是某某老師。我已經(jīng)在教育戰(zhàn)線奮斗了 幾年了) 調(diào)用這個(gè)結(jié)構(gòu)顯示它的數(shù)據(jù),參考答案,值類型與引用類型,演示示例3:MySchool,使用類版Student和結(jié)構(gòu)版Student實(shí)現(xiàn)下面操作,static void Main(string args) /使用值類型 StructStudent student1 = new StructStudent(); StructStudent student2 = new StructStudent(); student1.Age = 18; student2 = student1; student2.Age = 20; Consol
12、e.WriteLine(student1 = 0,student2 = 1, student1.Age, student2.Age); ,static void Main(string args) /使用引用類型 Student student1 = new Student(); Student student2 = new Student(); student1.Age = 18; student2 = student1; student2.Age = 20; Console.WriteLine(student1 = 0,student2 = 1, student1.Age, student
13、2.Age); ,值類型,值類型直接存儲值,Age=18,student1,student1,studnet2,student1.Age = 18,Age=18,Age=18,student2 = student1,student1.Age,student1,studnet2,Age=18,Age=20,student2.Age = 20,引用類型,student1,student1.Age = 18,Age=18,引用類型存儲對值的引用,student1,studnet2,student2 = student1,student1.Age,兩個(gè)變量都發(fā)生變化,Age=20,student1,s
14、tudnet2,student2.Age = 20,拆箱和裝箱,值類型和引用類型之間的轉(zhuǎn)換,值類型,引用類型,裝箱,拆箱,static void Main(string args) int i = 123; object o = i; / 裝箱 i = 456; /改變i的內(nèi)容 Console.WriteLine(值類型的值為 0, i); Console.WriteLine(引用類型的值為 0, o); ,static void Main(string args) int i = 123; object o = i; / 裝箱 int j = (int)o; ,/ 拆箱,與值類型的變量類型要
15、一致,演示示例4:拆箱裝箱,值方式的參數(shù)的傳遞,值傳遞方式傳遞值類型: 結(jié)構(gòu):StructStudent 不會被修改,/傳遞值類型參數(shù) StructStudent scofield = new StructStudent(Scofield, Genders.Male, 28, 越獄獄); scofield.SayHi(); Vote(scofield); scofield.SayHi();,private void Vote(StructStudent stu) stu.Popularity+; ,人氣屬性加1的方法,人氣加1,兩次的人氣值相同,參數(shù)未發(fā)生變化,值傳遞,演示示例5:MyScho
16、ol,值方式的參數(shù)的傳遞,值傳遞引用類型時(shí): 類:Student 參數(shù)在程序中被修改,/傳遞引用類型參數(shù) Student scofield = new Student(Scofield, Genders.Male, 28, 越獄獄); scofield.SayHi(); Vote(scofield); scofield.SayHi();,引用類型:類,人氣屬性加1的方法,人氣加1,引用方式傳遞,傳遞值類型,傳遞引用類型,ref方式傳遞完全修改,private void Vote(ref StructStudent stu) stu.Popularity+; ,ref引用方式傳遞參數(shù),演示示例6
17、:MySchool,值類型和引用類型細(xì)分,傳遞數(shù)組,數(shù)組是值類型還是引用類型,/ int odd = 1, 3, 5 ; PrintArray(odd); ChangeToEven(odd); PrintArray(odd); /,private void ChangeToEven(int arr) for (int i = 0; i arr.Length; i+) arri = i * 2; ,值方式傳遞,arr0=1 arr1=3 arr2=5 arr0=0 arr1=2 arr2=4,參數(shù)被修改,數(shù)組是引用類型,演示示例7:MyArray,數(shù)組屬性,建立班級類包含多個(gè)學(xué)員,訪問學(xué)員對象,MyClass1 myClass1 = new MyClass1(T01); myClass1.Students2.SayHi();,通過索引訪問,數(shù)組屬性,什么是索引器,能否通過姓名訪問學(xué)員?,public Student thisint index get return studentsindex; ,Students類中添加,/采用索引器的方式 MyClass myClass = new MyClass(T01); myClass.Students2.SayHi(); myClass.Students周杰杰.SayHi(); ,可以按照索引訪問,重載的索引器根據(jù)姓名查找學(xué)員,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校安全重點(diǎn)部位實(shí)驗(yàn)室檢查記錄表
- 高一化學(xué)教案:專題第二單元第三課時(shí)燃料燃燒釋放的熱量
- 2024高中物理章末質(zhì)量評估一含解析粵教版選修1-1
- 2024高中語文開學(xué)第一課學(xué)生觀后感范文800字少年強(qiáng)中國強(qiáng)素材
- 2024高中語文精讀課文二第4課1貝多芬:扼住命運(yùn)的咽喉一課堂練習(xí)含解析新人教版選修中外傳記蚜
- 2024高考化學(xué)一輪復(fù)習(xí)第十二章物質(zhì)結(jié)構(gòu)與性質(zhì)第一講原子結(jié)構(gòu)與性質(zhì)規(guī)范演練含解析新人教版
- 2024高考?xì)v史一輪復(fù)習(xí)方案專題十五西方人文精神的起源和發(fā)展專題整合備考提能教學(xué)案+練習(xí)人民版
- 2025新人教版英語七年級下單詞表(小學(xué)部分)
- (2篇)2024初中英語教師工作總結(jié)初中英語教師述職報(bào)告
- 倉庫管理制度通知
- 基本藥物制度政策培訓(xùn)課件
- 2025年中國華能集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- GB/T 45002-2024水泥膠砂保水率測定方法
- 廣東省廣州海珠區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 飛行原理(第二版) 課件 第10章 高速空氣動力學(xué)基礎(chǔ)
- 廣西《乳腺X射線數(shù)字化體層攝影診療技術(shù)操作規(guī)范》
- 山西省2024年中考道德與法治真題試卷(含答案)
- 酒店會議室設(shè)備安裝及調(diào)試方案
- 2024年新疆(兵團(tuán))公務(wù)員考試《行測》真題及答案解析
- JGJ120-2012建筑基坑支護(hù)技術(shù)規(guī)程-20220807013156
- 英語代詞專項(xiàng)訓(xùn)練100(附答案)含解析
評論
0/150
提交評論