版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章函數(shù)、域與屬性計(jì)算機(jī)科學(xué)系——畢好昌年3月1/42主要內(nèi)容函數(shù)定義、使用屬性與域定義以及使用2/42C#中函數(shù)定義在大多數(shù)應(yīng)用軟件設(shè)計(jì)中,將應(yīng)用程序分成若干個(gè)功效單元。因?yàn)樾《纬绦蚋子诹私?、設(shè)計(jì)、開(kāi)發(fā)和調(diào)試,所以采取功效單元是應(yīng)用程序設(shè)計(jì)關(guān)鍵法則。分為若干個(gè)功效單元方便在應(yīng)用程序中重用功效構(gòu)件。另外,在整個(gè)大程序中,一些任務(wù)經(jīng)常要在一個(gè)程序中運(yùn)行好屢次,舉個(gè)最簡(jiǎn)單例子,對(duì)多個(gè)數(shù)組進(jìn)行排序。此時(shí)我們就能夠把這些相同代碼段寫(xiě)成一個(gè)單獨(dú)單元,需要時(shí)候我們就來(lái)調(diào)用它。C#.NET程序語(yǔ)言中我們把這個(gè)單獨(dú)單元叫做函數(shù)3/42函數(shù)特點(diǎn)函數(shù)擁有自己名稱,能夠使用正當(dāng)C#.NET標(biāo)識(shí)符來(lái)命名。但其名稱不能與變量、常數(shù)或定義在類內(nèi)屬性或者其它方法名重復(fù)。函數(shù)內(nèi)申明變量屬于局部變量,也就是說(shuō)C#.NET在不一樣函數(shù)內(nèi)申明變量彼此互不相關(guān),其作用域局限在該函數(shù)內(nèi)。所以在不一樣函數(shù)內(nèi)允許申明相同局部變量名稱。函數(shù)有特定功效,程序代碼簡(jiǎn)單明確,可讀性高而且輕易調(diào)試和維護(hù)。4/425.1函數(shù)定義和使用函數(shù)就是代碼邏輯片斷,它能夠執(zhí)行特定操作。對(duì)象或者類調(diào)用函數(shù)來(lái)實(shí)現(xiàn)函數(shù)功效。函數(shù)能夠有返回類型,當(dāng)然,返回類型也能夠是Void。函數(shù)申明語(yǔ)法為:<修飾符><返回類型><函數(shù)名稱>(參數(shù)1,參數(shù)2,…)5/42函數(shù)修飾符函數(shù)修飾符有很多,如:newpublicprotectedinternalprivatestaticvirtualsealedoverrideabstractextern6/42函數(shù)修飾符含義上面很多函數(shù)修飾符中,Public、Protected、Internal、ProtectedInternal、Private是對(duì)函數(shù)作用域修飾,其余關(guān)鍵字有其它含義,在此,我們只講函數(shù)作用域修飾符意義。7/42函數(shù)修飾符含義8/42一個(gè)簡(jiǎn)單調(diào)用函數(shù)例子申明函數(shù)之后,我們就能夠調(diào)用任何類或者對(duì)象所使用函數(shù)。例:第一個(gè)函數(shù)定義以及調(diào)用usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample1Of5{classProgram{staticvoidMain(string[]args){Console.WriteLine("輸入你大名:");strings=Console.ReadLine();myFirstMethod(s);}staticvoidmyFirstMethod(strings1){Console.WriteLine("Welcome"+s1+",Youhaveenteredtheworldofthemethod!");}}}9/42程序運(yùn)行結(jié)果10/425.2函數(shù)參數(shù)傳遞方式在調(diào)用函數(shù)時(shí)候,能夠向函數(shù)傳遞參數(shù)列表。C#中函數(shù)參數(shù)有4種類型:值參數(shù),不含任何修飾符。引用型參數(shù),以Ref修飾符申明。輸出參數(shù),以O(shè)ut修飾符申明。數(shù)組型參數(shù),以Params修飾符申明。若A語(yǔ)句中調(diào)用函數(shù)B,二者間有參數(shù)傳遞,那么,我們將A調(diào)用語(yǔ)句中傳送參數(shù)稱為實(shí)參;被調(diào)用函數(shù)B中使用參數(shù)成為形參。11/425.2.1值參數(shù)當(dāng)利用值向函數(shù)傳遞參數(shù)時(shí),編譯程序給實(shí)參值做一份復(fù)制,而且將此復(fù)制傳遞給該函數(shù)。被調(diào)用函數(shù)不會(huì)修改內(nèi)存中實(shí)參值,所以使用值參數(shù)時(shí),能夠確保實(shí)際值是安全。12/42值參數(shù)傳遞示例例值參數(shù)傳遞示例。程序代碼:usingSystem;namespaceExample3Of5{classProgram{staticvoidMain(string[]args){inta=3;intb=5;change(a,b);Console.WriteLine("a={0},b={1}",a,b);}staticvoidchange(inta1,intb1){intt;t=a1;a1=b1;b1=t;}}}13/42程序運(yùn)行結(jié)果此程序輸出結(jié)果是a=3,b=5,可見(jiàn)我們并沒(méi)有到達(dá)交換目標(biāo),在這個(gè)程序里我們采取了值參數(shù)傳遞,形參值修改并不影響實(shí)參值。14/425.2.2引用型參數(shù)與值參不一樣是,引用型參數(shù)并不開(kāi)辟新內(nèi)存區(qū)域。當(dāng)利用引用型參數(shù)向函數(shù)傳遞形參時(shí),編譯程序?qū)褜?shí)際值在內(nèi)存中地址傳遞給函數(shù)。在函數(shù)中,引用型參數(shù)通常已經(jīng)初始化。15/42引用型參數(shù)傳遞例子例把上面例子改寫(xiě)成引用型參數(shù)傳遞。程序代碼:usingSystem;namespaceExample4Of5{classProgram{staticvoidMain(string[]args){inta=3;intb=5;change(refa,refb);Console.WriteLine("a={0},b={1}",a,b);}staticvoidchange(refinta1,refintb1){intt;t=a1;a1=b1;b1=t;}}}16/42運(yùn)行結(jié)果及分析此程序輸出結(jié)果是a=5,b=3。在Main()函數(shù)中,調(diào)用了change函數(shù),使用引用型參數(shù),成功地實(shí)現(xiàn)了a和b交換。a1和b1所處內(nèi)存區(qū)域其實(shí)就是a和b所處內(nèi)存區(qū)域,所以當(dāng)a1和b1值交換時(shí),a和b值自然會(huì)發(fā)生改變。17/425.2.3輸出型參數(shù)與引用型參數(shù)類似,輸出型參數(shù)也不開(kāi)辟新內(nèi)存區(qū)域。與引用型參數(shù)差異在于,調(diào)用前不需對(duì)變量進(jìn)行初始化。輸出型參數(shù)用于傳遞方法返回?cái)?shù)據(jù)。Out修飾符后應(yīng)跟隨與形參類型相同類型申明。在方法返回后,傳遞變量被認(rèn)為經(jīng)過(guò)了初始化。18/42Out關(guān)鍵字使用小例子例使用Out關(guān)鍵字練習(xí)編寫(xiě)輸出參數(shù)。程序代碼:usingSystem;namespaceExample5Of5{classProgram{staticvoidMain(string[]args){Console.WriteLine("\nout參數(shù)輸出****\n");inta,b;UseOut(outa,outb);Console.WriteLine("\n調(diào)用UseOut函數(shù)后返回主程序:a={0},b={1}",a,b);Console.ReadLine();}privatestaticvoidUseOut(outintx,outinty){inttemp;x=20;y=30;Console.WriteLine("\n函數(shù)內(nèi)交換前x={0},y={1}",x,y);temp=x;x=y;y=temp;Console.WriteLine("\n函數(shù)內(nèi)交換后x={0},y={1}",x,y);}}}19/42運(yùn)行結(jié)果20/425.2.4數(shù)組型參數(shù)C#允許為函數(shù)指定一個(gè)(只能指定一個(gè))特定參數(shù),這個(gè)參數(shù)必須是函數(shù)定義中最終一個(gè)參數(shù),稱為數(shù)組型參數(shù)。數(shù)組型參數(shù)能夠使用個(gè)數(shù)不定參數(shù)調(diào)用函數(shù),它能夠使用params關(guān)鍵字來(lái)定義。另外,參數(shù)只允許是一維數(shù)組。比如int[]和int[][]類型都能夠作為數(shù)組型參數(shù),而int[,]則不能夠。最終,數(shù)組型參數(shù)不能再有Ref和Out修飾符。21/42數(shù)組型參數(shù)示例例數(shù)組型參數(shù)示例usingSystem;namespaceExample6Of5{classProgram{staticvoidMain(string[]args){
intmaxAge=Max(18,23,19,22,27);Console.WriteLine("themaxofageis:{0}",maxAge);}staticintMax(paramsint[]Age){inttemp=0;for(inti=0;i<Age.Length;i++){if(temp<Age[i])temp=Age[i];}returntemp;}}}22/42程序運(yùn)行結(jié)果23/42數(shù)組型參數(shù)示例例數(shù)組型參數(shù)示例(各種類型實(shí)參,同一形參)。程序代碼:usingSystem;namespaceExample7Of5{classProgram{staticvoidMain(string[]args){int[]f1={1,2,3,4};Output(f1);Output(10,20,30);Output();Console.ReadLine();}staticvoidOutput(paramsint[]a){Console.WriteLine("thereare{0}elements:",a.Length);foreach(intiina){Console.Write("{0},",i);}Console.WriteLine();}}}24/42程序運(yùn)行結(jié)果25/425.2.5參數(shù)匹配在調(diào)用函數(shù)時(shí),實(shí)參和形參必須完全匹配,這意味著形參加實(shí)參之間類型、個(gè)數(shù)和次序都要完全匹配。例以下面函數(shù):privatevoidf(inta,stringb){Console.WriteLine("dsahfsd;hnf");}則不能使用下面代碼調(diào)用;
f(1,2);26/42這是因?yàn)?,函?shù)形參第一個(gè)為整型,第二個(gè)為string型。而調(diào)用函數(shù)代碼中第一個(gè)實(shí)參為整型,第二個(gè)還是整型,與函數(shù)第二個(gè)形參不匹配。 一樣,上面函數(shù)也不能被以下代碼調(diào)用:
f("there"); 這里實(shí)參形參個(gè)數(shù)顯著不一樣,所以不能夠。 參數(shù)不匹配通不過(guò)編譯,因?yàn)榫幾g器要求必須匹配函數(shù)署名。27/425.3區(qū)塊變量與屬性組員28/425.3.1區(qū)塊變量C#.NET語(yǔ)言中,區(qū)塊變量被定義于某個(gè)區(qū)塊中,比如說(shuō)前面所講While循環(huán)語(yǔ)句中申明變量,只能在所定義While循環(huán)中使用。也就是說(shuō),某區(qū)塊中定義變量,只能供這個(gè)區(qū)塊使用,區(qū)塊以外使用則報(bào)錯(cuò)。29/425.3.2屬性組員屬性組員跟在第二章中介紹靜態(tài)變量一樣,不一樣是對(duì)象屬性是放在堆里面,必須對(duì)對(duì)象進(jìn)行實(shí)例化,才能夠使用屬性;而靜態(tài)字段是放在全局變量區(qū),不需要實(shí)例化對(duì)象就直接能夠引用靜態(tài)變量。classtest{publicstaticintvalue;//靜態(tài)變量publicintvalue1;//對(duì)象屬性}30/425.4Main()函數(shù)全部C#應(yīng)用程序必須在它一個(gè)類中定義一個(gè)名為Main函數(shù)。這個(gè)函數(shù)作為應(yīng)用程序入口點(diǎn),它必須被定義為靜態(tài)。詳細(xì)在哪個(gè)類中使用Main()函數(shù)對(duì)C#編譯器并無(wú)影響,而且你選擇類也不影響編譯次序。這與C++不一樣,在C++中編譯應(yīng)用程序時(shí)必須親密注意依賴性。C#編譯器很精明,能夠自己在源代碼文件中自動(dòng)搜尋到Main()函數(shù)。所以,這個(gè)最主要方法是全部C#應(yīng)用程序入口點(diǎn)。31/42即使一個(gè)C#應(yīng)用中可能會(huì)有很多類,不過(guò)其中只有一個(gè)入口。在同一個(gè)應(yīng)用中,可能多個(gè)類都有Main()函數(shù),不過(guò)只有一個(gè)Main()函數(shù)是被執(zhí)行。你需要在編譯時(shí)候指定終究使用哪一個(gè)Main()函數(shù)。常見(jiàn)Main()函數(shù)是這么:staticvoidMain(string[]args){}Main()函數(shù)中參數(shù)Args是從應(yīng)用程序外部接收信息方法,這些信息在運(yùn)行期間指定,其形式是命令行參數(shù)。32/42細(xì)心讀者會(huì)注意到,Main()函數(shù)必須定義為靜態(tài),這是因?yàn)镃#.NET是一門(mén)真正面向?qū)ο缶幊陶Z(yǔ)言,Main()函數(shù)是整個(gè)應(yīng)用程序入口,Static能夠確保程序調(diào)用時(shí)候不需要實(shí)例化就能夠運(yùn)行程序。 看看下面一段代碼:namespacetest{classTest{publicvoidInstanceMethod(){}//實(shí)例組員(非靜態(tài))publicstaticvoidStaticMethod{}//類型組員(靜態(tài))staticvoidMain(string[]args){InstanceMethod();//錯(cuò)誤!調(diào)用了實(shí)例組員,而此時(shí)并沒(méi)有建立實(shí)例StaticMethod();//正確!能夠調(diào)用靜態(tài)組員TestSomeTest=newTest();//建立本類型一個(gè)實(shí)例SomeTest.InstanceMethod();//再在這個(gè)實(shí)例上調(diào)用實(shí)例組員就對(duì)了SomeTest.StaticMethod();//附加一句,在實(shí)例上調(diào)用靜態(tài)組員也是錯(cuò)誤!}} 上面代碼中注釋很明確,在這里就不多解釋了。33/425.5字段字段申明方法:field-modifierstypevariable-declarators; 其中field-modifiers表示字段修飾符,type表示字段詳細(xì)類型,variable-declarators表示字段變量名。34/42字段修飾符field-modifiers能夠是:newpublicprotectedinternalprivatestaticreadonly35/425.6屬性屬性定義跟域有些相同,不過(guò)內(nèi)容要比域內(nèi)容多。屬性是對(duì)現(xiàn)實(shí)世界中實(shí)體特征抽象,它提供了對(duì)類或?qū)ο笮再|(zhì)訪問(wèn)。比如,一個(gè)用戶姓名、一個(gè)文件大小、一件物品重量都能夠作為屬性。類屬性所描述是狀態(tài)信息,在類某個(gè)實(shí)例中屬性值表示該對(duì)象狀態(tài)值。36/42屬性修飾符屬性修飾符property-modifiers有:newpublicprotectedinternalprivatestaticvirtualsealedoverrideabstract37/42屬性定義舉例下面代碼簡(jiǎn)單地介紹了屬性myProperties定義。classA{
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電影放映員班組考核知識(shí)考核試卷含答案
- 噴涂預(yù)處理工崗前沖突管理考核試卷含答案
- 篩粉工標(biāo)準(zhǔn)化評(píng)優(yōu)考核試卷含答案
- 陶瓷擠出成型工安全風(fēng)險(xiǎn)測(cè)試考核試卷含答案
- 臨床檢驗(yàn)類設(shè)備組裝調(diào)試工標(biāo)準(zhǔn)化考核試卷含答案
- 塑料層壓工風(fēng)險(xiǎn)識(shí)別評(píng)優(yōu)考核試卷含答案
- 野生植物采集工崗前操作技能考核試卷含答案
- 煮呢機(jī)擋車工創(chuàng)新應(yīng)用考核試卷含答案
- 稀土催化材料工操作規(guī)范能力考核試卷含答案
- 鋁粒工崗前工作規(guī)范考核試卷含答案
- 2025年成都市錦江區(qū)教育局公辦學(xué)校員額教師招聘第六批考試參考試題及答案解析
- 基于Python豆瓣電影數(shù)據(jù)可視化分析設(shè)計(jì)與實(shí)現(xiàn)-論文15000字
- 兒童呼吸系統(tǒng)藥物應(yīng)用與管理
- 國(guó)開(kāi)2025年人文英語(yǔ)4寫(xiě)作形考答案
- 臍灸課件教學(xué)課件
- 2025年全面解析供銷社財(cái)務(wù)人員招聘考試要點(diǎn)及模擬題集錦
- 微通道液冷技術(shù)-洞察及研究
- 供應(yīng)室無(wú)菌消毒課件
- 造船行業(yè)工期保證措施
- 2024部編版七年級(jí)道德與法治上冊(cè)背記知識(shí)清單
- 基于數(shù)據(jù)挖掘的PC平臺(tái)熱 門(mén)游戲銷售量影響因素分析
評(píng)論
0/150
提交評(píng)論