資源描述:
《C#方法和作用域》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章方法和作用域教學目標本章主要介紹方法的定義、調(diào)用及參數(shù)傳遞,方法的重載。作用域的含意、局部作用域和類作用域。我們將學會在程序中如何聲明方法和調(diào)用方法。教學重點方法的定義和調(diào)用參數(shù)傳遞方法局部作用域和類作用域方法重載System.Math類的使用方法是把一些相關(guān)的語句組織在一起,用于解決某一特定問題的語句塊。方法必須放在類定義,也就是說,方法必須是某一個類的方法。方法必須先聲明后使用。C#語言中的方法相當于其他編程語言(如VB.NET)中的通用過程(Sub過程)或函數(shù)過程(Function過程)。5.1方法和作用域聲明方法最常用的語
2、法格式為:訪問修飾符返回類型方法名(參數(shù)列表){…//方法體}訪問修飾符的含義如表5-1所示:5.1.1方法聲明表5-1:訪問修飾符的含義方法訪問修飾符功能說明public方法的訪問完全沒有限制protected只有本類或繼承自本類的子類(即以本類作父類的類)可以使用internal方法的使用僅限于當前項目protectedinternal方法的使用僅限于當前項目或者繼承于此類的類private只有類本身存取而已(默認)按照被調(diào)用的位置,可以分為在方法聲明的類定義中調(diào)用和在方法聲明的類定義外部調(diào)用2種調(diào)用方法。1.在方法聲明的類定義中調(diào)
3、用,實際上是由類定義內(nèi)部的其他方法成員調(diào)用該方法,其語法格式為:方法名(參數(shù)列表)舉例如下:5.1.2方法調(diào)用2.在方法聲明的類定義外部調(diào)用實際上是通過類聲明的對象調(diào)用該方法,其語法格式為:對象名.方法名(參數(shù)列表)5.1.2方法調(diào)用在方法的聲明與調(diào)用中,經(jīng)常涉及方法的參數(shù),在方法聲明中使用的參數(shù)叫形式參數(shù)(形參),在調(diào)用方法中使用的參數(shù)叫實際參數(shù)(實參)。在調(diào)用方法時,參數(shù)傳遞就是將實參傳遞給形參的過程。5.1.3參數(shù)傳遞C#中函數(shù)的參數(shù)有4種類型:值參數(shù),不含任何修飾符。引用型參數(shù),以ref修飾符聲明。輸出參數(shù),以out修飾符聲明。
4、數(shù)組型參數(shù),以params修飾符聲明。5.1.3參數(shù)傳遞1.按值傳遞參數(shù)按值的方式傳遞是指當把實參傳遞給形參時,是把實參的值復制(拷貝)給形參,實參和形參使用的是兩個不同內(nèi)存中的值,所以這種參數(shù)傳遞方式的特點是形參的值發(fā)生改變時,不會影響實參的值,從而保證了實參數(shù)據(jù)的安全。示例:Ex5-2:值參數(shù)傳遞示例。5.1.3參數(shù)傳遞2.按引用傳遞按引用傳遞是指實參傳遞給形參時,不是將實參的值復制給形參,而是將實參的引用傳遞給形參,實參與形參使用的是同一個內(nèi)存中的值。這種參數(shù)傳遞方式的特點是形參的值發(fā)生改變時,同時也改變實參的值?;绢愋蛥?shù)按引
5、用傳遞時,實參與形參前均須使用ref關(guān)鍵字說明。在方法中,引用型參數(shù)通常已經(jīng)初始化。5.1.3參數(shù)傳遞例如Swap方法代碼如下:publicvoidSwap(refstrings1,refstrings2){strings3;s3=s1;s1=s2;s2=s3;}則調(diào)用該方法的語句代碼如下:Swap(refss1,refss2);//在實參中增加ref關(guān)鍵字。示例:Ex5-3:按引用傳遞5.1.3參數(shù)傳遞類對象參數(shù)總是按引用傳遞的,所以類對象作為參數(shù)時不需要使用ref關(guān)鍵字。5.1.3參數(shù)傳遞3.輸出型參數(shù)與引用型參數(shù)類似,輸出型參數(shù)也
6、不開辟新的內(nèi)存區(qū)域。與引用型參數(shù)的差別在于:調(diào)用前不需對變量進行初始化。一般輸出型參數(shù)用于傳遞方法返回的數(shù)據(jù)。示例:Ex5-45.1.3參數(shù)傳遞作用域也就是作用范圍的意思。它有局部作用域和類作用域之分。5.2作用域什么是局部作用域?在C#中,局部變量被定義在某個區(qū)塊中。也就是說,某區(qū)塊中定義的變量,只能供這個區(qū)塊使用,區(qū)塊以外使用則報錯。在方法主體中聲明的變量只具有那個方法的作用域;一旦方法結(jié)束,它們也會消失,而且只能由那個方法內(nèi)部執(zhí)行的代碼來訪問。這些變量稱為局部變量(localvariable),因為它們局限于聲明它們的那個方法,不
7、能在其他任何方法的作用域中使用。換言之,你不能使用局部變量在不同的方法之間共享信息。5.2.1定義局部作用域什么是類作用域?在類定義體中(但不在某個方法中)聲明的任何變量都具有那個類的作用域。在C#語言中,使用字段(field)一詞來描述由一個類定義的變量。和局部變量不同,可以使用字段在不同的方法之間共享信息。5.2.2定義類作用域如果兩個標識符同名,而且在同一個作用域中聲明,就可以說它們重載。方法重載是聲明兩個以上的同名方法,以實現(xiàn)對不同數(shù)據(jù)類型的相同處理。方法重載有兩點要求:重載的方法名稱必須相同。重載的方法,其形參個數(shù)或類型必須不
8、同,否則將出現(xiàn)“已經(jīng)定義了一個具有相同類型參數(shù)的方法成員”的編譯錯誤。5.2.3重載方法例如能同時處理整型與浮點型數(shù)據(jù)的重載方法:publicvoidSwap(refinta,refintb){…}publ