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

下載本文檔

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

文檔簡(jiǎn)介

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

第3章C#面向?qū)ο缶幊?基本內(nèi)容屬性索引器方法的參數(shù)小結(jié)3本節(jié)目標(biāo)理解面向?qū)ο蟮幕靖拍罾斫忸惡蛯?duì)象的區(qū)別和聯(lián)系掌握屬性的使用區(qū)別只讀屬性和可讀寫屬性掌握方法的聲明和使用4數(shù)據(jù)安全staticvoidMain(string[]args){StudentmyStudent=newStudent();myStudent.age=-2;myStudent.id="123456";

}非法數(shù)據(jù)身份證號(hào)不能被修改無(wú)法獲得數(shù)據(jù)無(wú)法正常賦值有時(shí)候?qū)㈩愔械淖侄喂_是不安全的如果設(shè)為私有成員能否對(duì)這些字段進(jìn)行規(guī)則約束或者只讀呢?5什么是屬性(property)C#不直接訪問(wèn)類的數(shù)據(jù)通過(guò)訪問(wèn)器訪問(wèn)(get,set)classStudent{//姓名

privatestringname;publicstringName{get{returnname;}set{name=value;}}}返回nameget用于獲取相應(yīng)字段的值set用于設(shè)置字段的值只有g(shù)et時(shí):只讀屬性只有set時(shí):只寫屬性get和set都存在:讀寫屬性屬性的類型和字段類型必須一致。給name賦值[屬性修飾符]

類型屬性名{get{return字段名;}set{字段名

=value;}}6屬性的特點(diǎn)privateintage;//年齡publicintAge{get{returnage;}set

{

if(value>0&&value<100){

age=value;}else{

age=18;}}}控制私有字段的可訪問(wèn)性保護(hù)內(nèi)部數(shù)據(jù)的安全建議類內(nèi)部敏感字段使用屬性來(lái)控制訪問(wèn)類型可以是各種數(shù)據(jù)類型,如:對(duì)象、數(shù)組等等7在類中使用屬性privateintage;//年齡publicintAge{get{returnage;}set

{

if(value>0&&value<100){

age=value;}else{

age=18;}}}myStudent.Age=-20;…//打印myStudent.Age=40;…//打印沒(méi)有訪問(wèn)age公開Age錄入非法數(shù)據(jù)打印私有變量age演示示例:MyAttribute

不公開age通過(guò)公有Age訪問(wèn)和約束私有字段age8屬性注意事項(xiàng)屬性可以被聲明為public,private,protected,internal,orprotectedinternal同一屬性的get和set可以有不同的訪問(wèn)限制不能同時(shí)為get、set指定訪問(wèn)修飾符。get或set的訪問(wèn)修飾符可以和屬性不同,但必須是比屬性有更高的限制9自動(dòng)實(shí)現(xiàn)的屬性自動(dòng)實(shí)現(xiàn)的屬性聲明的基本形式如下:[屬性修飾符]類型屬性名{get;set;}[;]編譯器將創(chuàng)建一個(gè)私有的匿名后備字段,該字段只能通過(guò)屬性的get和set訪問(wèn)器進(jìn)行訪問(wèn)必須同時(shí)定義get和set訪問(wèn)器如果想只讀訪問(wèn)該屬性,則將set訪問(wèn)器設(shè)置為private10基本內(nèi)容屬性索引器方法的參數(shù)小結(jié)11索引器的聲明和訪問(wèn)定義格式:

[修飾符]<類型名>this[下標(biāo)索引]{get;set;}類、字符串等整數(shù)或字符串索引器(indexer)允許class、struct的實(shí)例像數(shù)組一樣進(jìn)行索引與屬性類似,又被稱為帶參數(shù)的屬性便于訪問(wèn)對(duì)象中封裝的內(nèi)部集合或數(shù)組索引器的訪問(wèn)方式:對(duì)象[索引參數(shù)]和屬性具有相同的訪問(wèn)修飾符不能使用ref或out關(guān)鍵字修飾12練習(xí)編寫一個(gè)程序,用于接受四年制大學(xué)生每年的GPA(GradePointAverage,年級(jí)平均成績(jī)),計(jì)算GPA平均值,并顯示該值。Student類定義一個(gè)數(shù)組,用于存放每年的GPA值要存儲(chǔ)和檢索每年的GPA值,可以使用索引器年級(jí)可以用作索引器的索引13publicclassStudent{

//四年的成績(jī)privateint[]score=newscore[4];

publicintthis[intindex]{get{returnthis.score[index];}set{this.score[index]=value;}}}classTest{staticvoidMain(string[]args){

Studentst1=newStudent();

st1[0]=90;

Console.WriteLine("第1年成績(jī):"+st1[0]);}14索引器的聲明和訪問(wèn)索引與屬性的比較:與屬性一樣是類的函數(shù)成員,而不是數(shù)據(jù)成員名稱固定為關(guān)鍵字this,且必須指定索引的參數(shù)表必須為實(shí)例成員get訪問(wèn)器具有和索引器一樣的形參表set存取器也有一個(gè)value參數(shù)訪問(wèn)方式與數(shù)組類似,使用[]訪問(wèn)元素什么情況下使用索引器?適合于具有序列性質(zhì)的數(shù)據(jù)類型,并要在類型中聲明一個(gè)可以存儲(chǔ)序列數(shù)組的字段。15基本內(nèi)容屬性索引器方法的參數(shù)小結(jié)16方法的聲明和調(diào)用方法的聲明:[方法修飾符]

返回值類型方法名(

[形參列表]

){方法體}方法的調(diào)用方法類似于字段的訪問(wèn):對(duì)象.方法名([實(shí)參列表]);return語(yǔ)句返回類型不是void,必須使用return返回類型為void可以沒(méi)有return,執(zhí)行代碼末尾也通過(guò)return選擇出口,但不能加表達(dá)式方法:也叫函數(shù),表示類的行為。17方法的參數(shù)類型方法的聲明可以包含一個(gè)[形參列表]方法調(diào)用時(shí)則通過(guò)傳遞[實(shí)參列表]方法體中不能定義同名的局部變量有四種類型的參數(shù)值形參(valueparameter),聲明時(shí)不帶任何修飾符引用形參(referenceparameter),用ref

修飾符聲明輸出形參(outputparameter),用out

修飾符聲明形參數(shù)組(parameterarray),用params

修飾符聲明181.值形參聲明時(shí)不帶修飾符的形參是值形參,用于輸入?yún)?shù)的傳遞值形參對(duì)應(yīng)于方法聲明空間的局部變量,其初始值為方法調(diào)用所提供的相應(yīng)實(shí)參(即創(chuàng)建一個(gè)新的存儲(chǔ)副本)對(duì)值形參的修改不會(huì)影響在方法調(diào)用時(shí)由調(diào)用方給出的實(shí)參值類型引用類型19引用形參staticvoidSwap(refintx,refinty){inttemp;temp=x;x=y;y=temp;}ref修飾符聲明的參數(shù)為引用參數(shù)

調(diào)用:Swap(refi,refj);方法調(diào)用必須顯式使用ref關(guān)鍵字實(shí)參必須是變量實(shí)參必須為與形參類型相同的變量,且在作為引用形參傳遞之前,必須先明確賦值引用形參并不創(chuàng)建新的存儲(chǔ)位置,其存儲(chǔ)位置就是方法調(diào)用中實(shí)參變量的存儲(chǔ)位置20兩種傳參方式的比較值調(diào)用方法Swap(i,j);調(diào)用前i=1j=2調(diào)用后x=1y=2調(diào)用i=1j=2x=2y=1值調(diào)用方法Swap(refi,refj);調(diào)用前i=1j=2調(diào)用后調(diào)用i=2j=1x=1y=2x=2y=1ij213.輸出形參用out

修飾符聲明的形參是輸出形參輸出形參的存儲(chǔ)位置就是實(shí)參的存儲(chǔ)位置。方法調(diào)用中的對(duì)應(yīng)實(shí)參必須為與形參類型相同的變量方法定義和調(diào)用都必須顯式使用out關(guān)鍵字Out參數(shù)只能用于從方法中傳出值,不能接受實(shí)參值(與ref的區(qū)別)Out參數(shù)在方法結(jié)束前必須賦值224.形參數(shù)組用params

修飾符聲明的形參是形參數(shù)組,允許向方法傳遞可變數(shù)量的實(shí)參形參數(shù)組必須位于該列表的最后必須是一維數(shù)組類型。例如,類型string[]和string[][]可用作形參數(shù)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論