.NET Framework讀書筆記一 參數
在平常工作中,設計方法的時,方法參數的設計是方法設計必須優先謹慎考慮的,比如說參數的類型、個數、預設值、可選性等。設計一個好的方法不管對代碼的可讀性、可維護性、可擴充性都起著很大的作用。在C#中,參數的預設值設定如下所示:
參數預設值設定方式如紅色矩形標註所示。函數Main分別對函數ShowInfor進行四次調用。仔細觀察對函數ShowInfor的調用可以發現一個特性如下所示:
程式運行結果:
從程式運行結果可以得出以下結論:
- 函數以具名引數傳值的順序可以不與函數定義的參數順序不一樣。
- 顯示給參數傳遞的值必須在具名引數傳值的左邊。
如果給ShowInfor函數添加一個參數ID,如下定義:
由VS的錯誤提示可知:選擇性參數的定義順序必須在必選參數的後面。
u Out與ref
參數的傳遞方式有兩種:傳值、傳引用,對於基本的資料類型,一般的是按值的方式進行傳遞,如果要按引用的方式進行傳遞,該如何做?這裡就涉及到C#中的Out與Ref相關方面的知識。
對於Out參數,傳遞的實參可以不初始化,但是在函數返回前,必須對該參數進行賦值,在函數內部該參數可寫,如下所示:
如果未對Out參數賦值,如下所示:
對於Ref參數,傳遞的實參在傳遞給形參前必須對其初始化,在函數內部可讀可寫。
public static void GetName(ref string name)
{
name = "SuperMan";
}
如果未對實參進行初始化,出現如下錯誤,提示:使用了未賦值的變數
針對Out參數和Ref參數類型必須與傳遞的實參的類型一致,否則出現如下錯誤:
u 傳遞可變數量參數 params
通常,在工作中使用最多的還是參數數量固定的方法。其實,在C#中,可以傳遞任意數量的參數,這在設計方法前並不知道將來具體可能有多少個參數的情況下提供了良好的解決方案。主要依靠關鍵字params來解決。Params必須和array聯合使用,否則如下所示:
如果確定是該調用可變參數數量函數還是固定參數數量函數?C#編譯器首先檢查是否存在於調用函數完全符合的方法原型,如果存在直接調用。如果不存在,在檢查是否存在使用了ParamArray屬性的方法,如果存在,則調用該方法。整個過程,如下所示:
以上就是參數的相關筆記,很少寫部落格,如有不當之處,請指出,我好修正。謝謝