




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章深入C#數(shù)據(jù)類型預(yù)習(xí)檢查C#中定義結(jié)構(gòu)的關(guān)鍵字是什么?值類型和引用類型有什么不同?結(jié)構(gòu)是值類型還是引用類型?值類型和引用類型的數(shù)據(jù)是否可以相互轉(zhuǎn)換?如何實(shí)現(xiàn)不同類型的轉(zhuǎn)換?使用值方式(不用ref修飾)傳遞值類型參數(shù)時(shí),參數(shù)在方法中的修改是否保留?集中測(cè)試2/38回顧與作業(yè)點(diǎn)評(píng).NET框架結(jié)構(gòu)包括哪兩個(gè)部分?公共語(yǔ)言運(yùn)行時(shí)的核心組件是什么?在VisualStudio2012中如何查看一個(gè)類的類圖?什么是封裝?使用封裝有何好處?點(diǎn)評(píng)作業(yè)的提交情況和共性問(wèn)題提問(wèn)3/38作業(yè)點(diǎn)評(píng)學(xué)習(xí)方法方法回顧第一學(xué)期C#數(shù)據(jù)類型基礎(chǔ)知識(shí)與同學(xué)討論,借助豐富的網(wǎng)絡(luò)資源嘗試自己去畫內(nèi)存分布圖4/38本章任務(wù)實(shí)現(xiàn)更新會(huì)員積分的功能實(shí)現(xiàn)給新購(gòu)計(jì)算機(jī)編號(hào)實(shí)現(xiàn)項(xiàng)目經(jīng)理給員工打分的功能5/38本章目標(biāo)理解結(jié)構(gòu)理解裝箱和拆箱理解值類型和引用類型的概念理解值類型和引用類型作為方法參數(shù)的區(qū)別會(huì)使用值類型和引用類型作為方法參數(shù)解決問(wèn)題6/38復(fù)習(xí)-常用數(shù)據(jù)類型常用數(shù)據(jù)類型JavaC#舉例整型intint年齡浮點(diǎn)型floatfloat成績(jī)雙精度型doubledouble圓周率布爾型booleanbool是否少數(shù)民族枚舉類型enumenum顏色字符串Stringstring家庭住址數(shù)據(jù)類型按存儲(chǔ)方式可分為兩類:值類型和引用類型7/38值類型張浩和李明去年身高都是170cm,今年李明長(zhǎng)到了180cm,張浩沒(méi)有變化,輸出去年和今年兩人身高定義兩個(gè)變量保存身高修改變量的值輸出變量的值問(wèn)題提示演示示例1:值類型-身高8/38值類型
intheightZhang=170;
intheightLi=heightZhang;
Console.WriteLine("去年--張浩的身高是:"+heightZhang+",李明的身高是:"+heightLi); heightLi=180; Console.WriteLine("今年--張浩的身高是:"+heightZhang +",李明的身高是:"+heightLi);
heightZhang170170heightLi180值類型:不同的變量會(huì)分配不同的存儲(chǔ)空間存儲(chǔ)空間中存儲(chǔ)的是該變量的值改變一個(gè)變量值不會(huì)影響另一個(gè)變量值分析9/38引用類型張浩和李明去年身高與體重均為170cm和60kg,李明今年身高和體重變?yōu)?80cm和70kg,張浩無(wú)變化。輸出兩人的身高和體重使用數(shù)組存儲(chǔ)數(shù)據(jù)實(shí)現(xiàn)此需求是否可行?問(wèn)題提問(wèn)演示示例2:引用類型-身高和體重10/38int[]infoZhang=newint[]{170,60};int[]infoLi=infoZhang;…infoLi[0]=180; //今年李明的身高變?yōu)?80infoLi[1]=70; //今年李明的體重變?yōu)?0…引用類型輸出結(jié)果為何錯(cuò)誤?infoZhang0x2a486c0x2a486cinfoLi1706018070引用類型:賦值是把原對(duì)象的引用傳遞給另一個(gè)引用兩個(gè)引用指向同一塊內(nèi)存空間分析11/3800引用類型通過(guò)數(shù)組復(fù)制解決以上問(wèn)題int[]infoZhang=newint[]{170,60};int[]infoLi=newint[2];for(inti=0;i<infoZhang.length;i++){ infoLi[i]=infoZhang[i]; }infoLi[0]=180; //今年李明的身高變?yōu)?80infoLi[1]=70; //今年李明的體重變?yōu)?0infoZhang0x2a486c0x2a679dinfoLi170601706018070數(shù)組元素有默認(rèn)值分析演示示例3:引用類型-數(shù)組復(fù)制12/38小結(jié)請(qǐng)說(shuō)出下面代碼的運(yùn)行結(jié)果,并解釋原因//使用值類型intage1=18;intage2=age1;age2=20;Console.WriteLine("age1:"+age1);Console.WriteLine("age2:"+age2);//使用引用類型SEse1=newSE();SEse2=newSE();se1.Age=18;se2=se1;se2.Age=20;Console.WriteLine("SE1的年齡為{0}",se1.Age);Console.WriteLine("SE2的年齡為{0}",se2.Age);代碼閱讀13/38學(xué)員操作—更新會(huì)員積分需求說(shuō)明使用數(shù)組存放五位會(huì)員的積分系統(tǒng)升級(jí),請(qǐng)將原有積分進(jìn)行備份,然后贈(zèng)送每位會(huì)員500積分,編寫程序輸出積分情況練習(xí)完成時(shí)間:20分鐘14/38結(jié)構(gòu)需要存儲(chǔ)學(xué)生信息,具有ID和年齡,選用哪種數(shù)據(jù)類型?publicclassStudent{publicintid;//ID
publicintage;//年齡}publicstructStudent{publicintid;//ID
publicintage;//年齡}保存值類型字段結(jié)構(gòu)的特點(diǎn):1.值類型2.具有較快數(shù)據(jù)提取速度問(wèn)題15/38結(jié)構(gòu)定義結(jié)構(gòu)中有字段,也可以有方法訪問(wèn)修飾符struct結(jié)構(gòu)名{
定義結(jié)構(gòu)成員}public
structStudent{publicintid;//IDpublicintage;//年齡
publicvoidShow(){Console.WriteLine("ID:{0}\n年齡:{1}",id,age);}}字段不能直接賦初值成員方法語(yǔ)法示例演示示例4:結(jié)構(gòu)創(chuàng)建和使用16/38
Student
stu;//創(chuàng)建學(xué)生結(jié)構(gòu)stu.id=1001;//給學(xué)號(hào)賦值stu.age=20;//給年齡賦值stu.Show();結(jié)構(gòu)的使用定義結(jié)構(gòu)可以不用new為結(jié)構(gòu)成員賦值調(diào)用結(jié)構(gòu)的方法Student
stu;stu.id=1001;stu.age=20;Studentstu2;stu2=stu;值類型,存儲(chǔ)為新的副本占用較多存儲(chǔ)空間;類:存儲(chǔ)地址示例示例經(jīng)驗(yàn)當(dāng)對(duì)象需要用較少的字段來(lái)表示時(shí),可以選用結(jié)構(gòu)結(jié)構(gòu)是值類型,數(shù)據(jù)提取速度快但是頻繁的賦值操作會(huì)占用較大空間,在開發(fā)中多數(shù)情況下都定義為類?。?!!17/38小結(jié)2-1編寫一個(gè)存儲(chǔ)長(zhǎng)方形(Rec)屬性的結(jié)構(gòu)長(zhǎng)(Length)寬(Width)實(shí)例化一個(gè)結(jié)構(gòu)長(zhǎng)方形,并計(jì)算面積現(xiàn)場(chǎng)編程18/38小結(jié)2-2值類型引用類型源自System.ValueTypeSystem.Object存儲(chǔ)方式存儲(chǔ)值存儲(chǔ)對(duì)象引用常用類型基本數(shù)據(jù)類型整型:int類基類:System.Object長(zhǎng)整型:long浮點(diǎn)型:float、double字符串:string字符型:char自定義類:class布爾型:bool枚舉類型(enum)接口結(jié)構(gòu)類型(struct)數(shù)組19/38staticvoidMain(string[]args){inti=123;
objecto=i;//裝箱
i=456;//改變i的內(nèi)容
Console.WriteLine("值類型的值為{0}",i);Console.WriteLine("引用類型的值為{0}",o);}staticvoidMain(string[]args){inti=123;objecto=i;//裝箱
intj=(int)o;//拆箱}裝箱和拆箱值類型和引用類型之間的轉(zhuǎn)換值類型引用類型裝箱拆箱與值類型的變量類型要一致經(jīng)驗(yàn)示例演示:裝箱和拆箱在實(shí)際的開發(fā)中,應(yīng)該盡量減少不必要的裝箱和拆箱因?yàn)槎叩拇鎯?chǔ)方式不同,轉(zhuǎn)換時(shí)性能損失較大!20/38復(fù)習(xí):值傳遞和引用傳遞請(qǐng)說(shuō)出如下程序的運(yùn)行結(jié)果提問(wèn)staticvoidChangeNum(intnum1,intnum2){inttemp=num1;num1=num2;num2=temp;}staticvoidMain(string[]args){intnum1=5;intnum2=10;ChangeNum(num1,num2);Console.WriteLine("{0}\t{1}",num1,num2);}staticvoidChangeNum(refintnum1,refintnum2){inttemp=num1;num1=num2;num2=temp;}staticvoidMain(string[]args){intnum1=5;intnum2=10;
ChangeNum(refnum1,refnum2);Console.WriteLine("{0}\t{1}",num1,num2);}使用值傳遞,在方法中對(duì)參數(shù)值的更改在調(diào)用后不能保留;使用ref方式傳遞,可以將對(duì)參數(shù)值的更改保留21/38不同類型參數(shù)傳遞公司通過(guò)投票選舉優(yōu)秀員工,每獲得一投票,人氣值增加1兩次的人氣值不同問(wèn)題22/38值方式傳遞引用類型值方式傳遞引用類型參數(shù)參數(shù)在方法中被修改
//傳遞引用類型參數(shù)SEzhang=newSE();//…省略其他賦值z(mì)hang.Popularity=10;Votervoter=newVoter();voter.Vote(zhang);MessageBox.Show(zhang.SayHi());publicvoidVote(SEse){//人氣值增加1se.Popularity++;}按引用傳遞參數(shù)zhang在Vote()調(diào)用后發(fā)生了變化示例演示示例5:投票增加人氣值23/38值方式傳遞值類型值方式傳遞值類型參數(shù)結(jié)構(gòu):StructSE不會(huì)被修改
//傳遞值類型參數(shù)StructSEstructZhang=newStructSE();//創(chuàng)建SE結(jié)構(gòu)//…省略其他賦值structZhang.Popularity=10;Votervoter=newVoter();voter.Vote(structZhang);MessageBox.Show(structZhang.SayHi());publicvoidVote(StructSEse){//人氣值增加1se.Popularity++;}人氣加1兩次的人氣值相同,參數(shù)在程序中未發(fā)生變化值傳遞示例演示示例6:使用結(jié)構(gòu)投票增加人氣值24/38引用方式傳遞ref引用方式傳遞引用類型參數(shù)publicvoidVote(refSEse){//人氣值增加1se.Popularity++;}調(diào)用Vote()前后人氣值發(fā)生變化,保留對(duì)參數(shù)的修改publicvoidVote(refStructSEse){//人氣值增加1se.Popularity++;}ref引用方式傳遞值類型參數(shù)調(diào)用Vote()前后人氣值發(fā)生變化,保留對(duì)參數(shù)的修改25/38不同類型參數(shù)傳遞不同類型參數(shù)傳遞參數(shù)變化是否保留值方式傳遞值類型否值方式傳遞引用類型是引用方式(ref)傳遞值類型是引用方式(ref)傳遞引用類型是26/38小結(jié)2-1閱讀代碼,寫出運(yùn)行結(jié)果int[]odd={1,3,5};//輸出數(shù)組元素PrintArray(odd);ChangeToEven(odd);PrintArray(odd);staticvoidChangeToEven(int[]arr){for(inti=0;i<arr.Length;i++){arr[i]=i*2;}}odd[0]=1odd[1]=3odd[2]=5odd[0]=0odd[1]=2odd[2]=4值方式傳遞引用類型參數(shù)數(shù)組是引用類型代碼閱讀27/38小結(jié)2-2編寫程序使用數(shù)組存儲(chǔ)班級(jí)5名學(xué)員的成績(jī),實(shí)現(xiàn)如下功能因?yàn)槟炒斡?jì)分失誤,需要為每位
學(xué)員成績(jī)提高5分如果提分后學(xué)員成績(jī)高于100分,
按100分計(jì)分別輸出提分前和提分后每位學(xué)
員的成績(jī)現(xiàn)場(chǎng)編程28/38學(xué)員操作—生成設(shè)備ID需求說(shuō)明為公司購(gòu)買的3臺(tái)不同型號(hào)的計(jì)算機(jī)進(jìn)行編號(hào)編號(hào)的規(guī)則是“計(jì)算機(jī)型號(hào)+4位隨機(jī)號(hào)”編號(hào)完畢后,輸出每臺(tái)計(jì)算機(jī)的信息練習(xí)完成時(shí)間:20分鐘29/38共性問(wèn)題集中講解常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解30/38學(xué)員操作—項(xiàng)目經(jīng)理評(píng)分3-1需求說(shuō)明顯示員工信息實(shí)現(xiàn)項(xiàng)目經(jīng)理給員工評(píng)分練習(xí)講解需求說(shuō)明31/38學(xué)員操作—項(xiàng)目經(jīng)理評(píng)分3-2實(shí)現(xiàn)思路編寫SE類查看評(píng)分窗體中創(chuàng)建公有成員變量保存員工信息SE對(duì)象數(shù)組初始化員工信息并使用ListView控件顯示編寫Init()方法和UpdateView()方法PM類添加Judge(SEse)方法,實(shí)現(xiàn)為員工評(píng)分選中某員工,雙擊打開評(píng)分窗體,實(shí)現(xiàn)事件處理方法指導(dǎo)32/38學(xué)員操作—項(xiàng)目經(jīng)理評(píng)分3-3難點(diǎn)指導(dǎo)ListView展示數(shù)據(jù)窗體間信息傳遞publicvoidUpdateView(){
lvAssess.Items.Clear();//清空信息
for(inti=0;i<engineers.Length;i++)
{
ListViewItemitem=newListViewItem();item.Text=engineers[i].ID;item.SubItems.Add(engineers[i]
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025太陽(yáng)能槽式復(fù)合拋物面聚光集熱土壤儲(chǔ)熱技術(shù)
- 個(gè)人勞動(dòng)法權(quán)益保障合同
- 個(gè)人抵押借款擔(dān)保合同
- 分期付款購(gòu)買機(jī)動(dòng)車合同書
- 醫(yī)療器械藥品購(gòu)銷合同
- 醫(yī)院場(chǎng)地租賃合同書樣本
- 五金電器銷售合同6篇
- 2025年紅河b2貨運(yùn)上崗證模擬考試
- 合同范本銷售人員聘用合同7篇
- 面板自動(dòng)檢測(cè)機(jī)競(jìng)爭(zhēng)策略分析報(bào)告
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 中建分供方資源管理辦法
- (人教PEP2024版)英語(yǔ)一年級(jí)上冊(cè)Unit 3 教學(xué)課件(新教材)
- 小小演說(shuō)家演講技巧教學(xué)設(shè)計(jì)
- 住院患者跌倒、墜床、壓力性損傷的風(fēng)險(xiǎn)評(píng)估及管理
- 2024移動(dòng)電源車運(yùn)維管理技術(shù)規(guī)范柴油機(jī)類
- 2024年中國(guó)端側(cè)大模型行業(yè)研究:算力優(yōu)化與效率革命+如何重塑行業(yè)生態(tài)-22正式版
- 學(xué)校臨聘人員規(guī)范管理自查報(bào)告
- (高清版)DB37T 5271-2024 建設(shè)工程造價(jià)指標(biāo)采集與發(fā)布標(biāo)準(zhǔn)
- 投訴法官枉法裁判范本
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論