標籤:style color 使用 strong 資料 ar 代碼 new
一.方法
1. 什麼叫做方法?
方法就是對一段代碼的重用的機制。
2. 方法的定義:
[存取修飾詞] [static] 傳回值類型 方法名()
{
方法體;
}
注意:用[]修飾的都是可選的。
3. 需要注意的細節:
命名規則:方法名開頭大寫,參數名開頭小寫,參數名、變數名要有意義。
4. 方法的參數:
1>在方法名後面括弧內定義變數就叫做定義這個方法的參數(形參)。
2>在方法()中我們定義多個參數時,參數之間用逗號分隔,不管參數之間的類型是否相同,都不能像定義同類型的多個變數時:如:int a,b,c,d;定義參數只能
一個資料類型後面跟一個變數名.因為參數的類型可以不同,所以肯定不支援定義多個同類型的變數那樣定義)。
3>方法的參數是可以帶預設值的,如果方法的參數帶了預設值,那麼我們在調用這個方法時就可以不為這個參數傳值。如果不為其傳值那麼將使用的是參數預設值,
如果傳了參數,參數的值就是實參的值。
4>如果方法的參數有的帶預設值,有的不帶預設值,那麼帶預設值的參數必須出現在參數列表的最右側。若方法中有帶預設值的參數,那我們在傳參的時候可以個數不一致,
但需要賦值的參數的類型位置要相對應。
5>顯示的為方法的形參賦值.文法:方法名(形參名:實參)。用顯示方法為參數賦值可以不根據順序來賦值。但個數和類型要相對應。
6>params是1個關鍵字.只能用來修飾方法的參數,並且被修飾的參數只能是一個一維數組,其它參數都不行。
a.在給params修飾的參數(一維數組)賦值時,可以賦一個一維數組,但也可以直接給元素的值,每個值用逗號分隔。因為C#編譯器在編譯的時候會把這些資料封裝到一個數組
(只是這個數組的長度由調用者決定),所以實際上參數還是只有一個數組,傳遞的時候也是以數組傳遞的。
b.被params修飾的參數必須要放在參數列表的最後.因為params修飾的一維數組長度不確定,若後面還有參數編譯器無法識別哪些是屬於params修飾的參數的,還是其他參數的。
所以只能放到最後。
c.被params修飾的參數在參數列表中最多隻能出現1次.
d.在為params修飾的參數傳遞的時候,也可以1個也不傳.,因為數組長度可以為0;
e.在方法的內部通過判斷數組的長度是否為0 來判斷使用者是否傳遞了元素的值.
f.如果構成重載,那麼在調用的時候 會先去匹配不帶params的方法. 如果不帶params的不能匹配 才會再去找帶params的匹配
二.傳回值
a.為什麼會有傳回值?
因為當調用者需要用到方法中的參數時,我們就需要方法給我們返回參數的值了。
1>return是一個關鍵字,在方法中用來返回方法的傳回值和立即結束本(當前的方法,即return所在的方法)方法的。文法:return 值;
2>ref 是1個關鍵字, 只能用來修飾方法的參數(言外之意就是變數等不能被ref修飾). 任意的參數都可以使用ref來修飾.
1> 如果方法的參數帶了ref,那麼實參也要帶上ref
2> 當我們為ref修飾的形參賦值時,賦的不是傳進來的實參值,而是實參變數的記憶體位址。所以這就是為什麼我們在方法內部修改局部變數的值外邊也發生了改變。
因為實際上我們改變的就是外面實參的值。
3> 當我們在為ref修飾的形參傳值時,在傳值前必須把實參變數進行初始化。
4> 在為ref形參傳遞值的時候,必須要給1個變數 不能給1個常量,因為ref傳遞的是變數的地址.
5> 被ref修飾的參數不能帶預設值。因ref要求傳遞變數地址,而實參不是變數地址。
3>out是1個關鍵字, 只能用來修飾方法的參數(言外之意就是變數等不能被out修飾). 任意的參數都可以使用out來修飾.
1> 如果方法的參數帶了out,那麼實參也要帶上out
2> 當我們為out修飾的形參賦值時,賦的不是傳進來的實參值,而是實參變數的記憶體位址。所以這就是為什麼我們在方法內部修改局部變數的值外邊也發生了改變。
因為實際上我們改變的就是外面實參的值
3> 被out修飾的參數,可以在方法外面不賦值,但在方法內部一定要賦值,並且是在使用之前就要賦值。
4> 在為out形參傳遞值的時候,必須要給1個變數 不能給1個常量,因為out傳遞的是變數的地址.
5> .因為out要求傳遞變數的地址,所以out修飾的參數不能帶預設值.
4>ref和out異同:
1> ref在實參傳遞之前實參必須要有值。而out可以沒有值。
2> out在方法內部並且在使用之前就必須賦值,而ref在內部可以不賦值。
3> 總結:即ref的實參在外面必須賦值,而out的參數必須在內部使用前賦值。不管是ref還是out它們都是傳遞的變數地址,它們都是修改的實參的值。
總結傳回值:
通過return我們可以返回一個資料,或者是一個資料集。但這要求資料的資料內型必須相同或者是相相容。所以return一般用於只有一個傳回值或者是資料類型相同的一個集合。
而ref和out是通過參數來傳回值,它們一般用於需要返回多個不同資料類型的值。
三. 方法的調用
1> 在同一命名空間下,由static修飾的方法我們可以通過:類名.方法名(參數)來調用。
2> 在同一命名空間下沒有被static修飾的方法都必須通過new關鍵字建立實列後,用實列名.方法名(參數)調用。
3> 不在同一命名空間下的,先必須把命名空間引進來,再來建立對象的實列來調用方法。靜態方法就直接:類名.方法名
四.方法的重載
a. 什麼叫做方法的重載?
一般在同一個類中(或者跟父類中),方法名相同,並且方法的參數個數不同,或者相對應位置上的參數類型不同,才能構成重載。
b.方法的重載跟傳回值沒半點鐘關係,只和參數有關(前提方法名相同)
五.變數的範圍
1. 局部變數:
a. 什麼叫做局部變數?
方法中定義的變數叫做局部變數,其範圍從定義開始,到其所在的大括弧結束為止。