《C#程序設(shè)計(jì)與開發(fā)第4章》由會(huì)員分享,可在線閱讀,更多相關(guān)《C#程序設(shè)計(jì)與開發(fā)第4章(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,第三級(jí),*,1,第四章,函數(shù),在程序中使用函數(shù)可以將若干條語(yǔ)句按照功能組織成一個(gè)獨(dú)立的代碼單元,這有利于復(fù)雜程序的組織、管理,有利于編程人員分工協(xié)作、逐步實(shí)現(xiàn)復(fù)雜的功能,有利于代碼的重復(fù)利用和維護(hù)。在,C,中,函數(shù)也稱為方法,在未介紹面向?qū)ο蟮挠嘘P(guān)概念之前,暫時(shí)使用函數(shù)這一術(shù)語(yǔ),在本書的第,5,章介紹,C#,面向?qū)ο缶幊虝r(shí),還會(huì)對(duì)方法進(jìn)行介紹。,本章的主要內(nèi)容包括:怎樣在,C#,程序中定義和使用函數(shù),結(jié)合函數(shù)介紹變量作用域的有關(guān)概念,使用重載函數(shù)的意義以及委托的基本概念。,2,本章學(xué)習(xí)要點(diǎn),在控制臺(tái)應(yīng)用程序中定義和使用函數(shù),通過(guò)返回值和參數(shù),利用函數(shù)交換數(shù)據(jù),參數(shù)數(shù)組
2、,按引用或按值傳遞參數(shù),使用輸出參數(shù),變量作用域的概念,理解函數(shù)的重載,委托的概念,3,4.1,定義函數(shù),要使用函數(shù),首先需要定義函數(shù)。在函數(shù)的定義中指定了函數(shù)所要完成的功能。函數(shù)的定義包含了兩個(gè)部分:函數(shù)頭和函數(shù)體。函數(shù)頭是函數(shù)定義中的第一行,在左花括號(hào)之前;函數(shù)體位于花括號(hào)對(duì)中,它包含了調(diào)用函數(shù)時(shí)要執(zhí)行的代碼。,1,函數(shù)頭,2,函數(shù)體,3,參數(shù),4.2,使用函數(shù),在知道了怎樣在,C#,代碼中定義函數(shù)之后,下面介紹怎樣在,C#,中使用函數(shù)。函數(shù)本來(lái)就是一個(gè)邏輯功能單元,使用函數(shù)的最基本目的就是讓它實(shí)現(xiàn)某個(gè)功能;除了實(shí)現(xiàn)某個(gè)特定的功能之外,還可通過(guò)函數(shù)進(jìn)行數(shù)據(jù)交換(主調(diào)函數(shù)和被調(diào)函數(shù)之間的數(shù)據(jù)
3、交換),一種方式是使用函數(shù)的返回值,另一種方式是使用函數(shù)參數(shù);使用函數(shù)的這兩個(gè)目的并非總是截然分開的,例如,有時(shí)需要進(jìn)行數(shù)據(jù)交換才能實(shí)現(xiàn)某個(gè)特定的功能。,4,4.2.2,參數(shù),如果需要通過(guò)函數(shù)參數(shù)實(shí)現(xiàn)數(shù)據(jù)交換,必須在定義函數(shù)時(shí),為函數(shù)指定要接受的參數(shù)列表,以及這些參數(shù)的類型;而且,在調(diào)用函數(shù)時(shí)要指定匹配的參數(shù)列表,即,實(shí)參的個(gè)數(shù)、類型和順序要與形參的個(gè)數(shù)、類型和順序保持一致,或者形參的類型能夠兼容實(shí)參的類型。,1,關(guān)于參數(shù)匹配,2,參數(shù)數(shù)組,3,引用參數(shù)和值參數(shù),4,輸出參數(shù),5,4.3,變量的作用域,本章的上一節(jié)介紹了怎樣使用函數(shù)交換數(shù)據(jù),但為什么需要使用函數(shù)交換數(shù)據(jù)呢?這就涉及到了變量的作
4、用域問(wèn)題。,程序中定義的變量都具有特定的作用域,變量的作用域是指程序中哪些地方可以使用該變量。不同變量的作用域可能是不同的,有的變量可以在程序的任何地方使用,而有的變量只能在程序的有限地方被使用。,6,4.4,函數(shù)重載,在編程中常常需要使用兩個(gè)或多個(gè)函數(shù)完成相同的任務(wù),但其參數(shù)的數(shù)據(jù)類型不同。例如,需要使用,larger(),函數(shù)的不同版本,查找出任何基本數(shù)據(jù)類型的兩個(gè)變量中的較大者。在理想情況下,所有這些函數(shù)都使用相同的名稱,larger(),,另一種方法是為,int,類型的變量定義函數(shù),largerInt(),為,double,類型的變量定義函數(shù),largerDouble(),,這兩個(gè)函數(shù)
5、的作用是相同的,但卻使用不同的名字,看上去很笨拙,不如前一種方法方便。,在,C#,中,可以使用兩個(gè)或兩個(gè)以上具有相同名稱只是參數(shù)聲明不完全相同的函數(shù),這種情況稱為函數(shù)的重載。概括地說(shuō),要重載函數(shù),只需聲明函數(shù)的不同版本,編譯器會(huì)處理剩余的工作。但重載函數(shù)的不同版本之間必須至少滿足下列所述的一個(gè)條件:,參數(shù)數(shù)目不同,參數(shù)類型不同,參數(shù)的順序不同,7,4.5,委托,委托是一種變量類型,可以間接地使用函數(shù)。同一個(gè)委托可以調(diào)用匹配于特定函數(shù)簽名的任何函數(shù),提供在程序運(yùn)行期間對(duì)幾個(gè)函數(shù)進(jìn)行選擇的能力。由于委托跟面向?qū)ο蟮母拍钣嘘P(guān),在未介紹,C#,面向?qū)ο缶幊讨?,本?jié)只介紹與委托有關(guān)的部分知識(shí)。,委托是一種可以把引用存儲(chǔ)為函數(shù)的類型。委托的聲明非常類似于函數(shù),但沒(méi)有函數(shù)體,而且要使用,delegate,關(guān)鍵字。委托的聲明指定了一個(gè)函數(shù)簽名,其中包括返回類型和參數(shù)列表;在聲明委托之后,就可以聲明該委托類型的變量了,可將該變量初始化為與委托有相同簽名的函數(shù)引用,然后,就可以使用委托變量調(diào)用這個(gè)函數(shù)。,在具有可引用函數(shù)的變量后,還可以執(zhí)行不能用其他方式完成的操作。例如,可以把委托變量作為參數(shù)傳遞給一個(gè)函數(shù),這樣,該函數(shù)就可以使用委托調(diào)用它引用的任何函數(shù),而且,在運(yùn)行之前無(wú)需知道調(diào)用的是哪個(gè)函數(shù)。,8,