CLR Via C# 閱讀筆記-參數

.NET Framework讀書筆記一 參數

  •  默認值、命名參數

在平常工作中,設計方法的時,方法參數的設計是方法設計必須優先慎重考慮的,比如說參數的類型、個數、默認值、可選性等。設計一個好的方法不管對代碼的可讀性、可維護性、可擴展性都起着很大的作用。在C#中,參數的默認值設置如下所示:

 

參數默認值設置方式如上圖紅色矩形標註所示。函數Main分別對函數ShowInfor進行四次調用。仔細觀察對函數ShowInfor的調用可以發現一個特性如下所示:

程序運行結果:

 

從程序運行結果可以得出以下結論:

  1. 函數以命名參數傳值的順序可以不與函數定義的參數順序不一樣。
  2. 顯示給參數傳遞的值必須在命名參數傳值的左邊。

如果給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屬性的方法,如果存在,則調用該方法。整個過程,如下所示:

 

以上就是參數的相關筆記,很少寫博客,如有不當之處,請指出,我好修正。謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章