不能不提的選擇性引數跟具名引數

不能不提的選擇性引數跟具名引數

這篇比較像是給自己一個筆記

常常會忘記怎麼用

 

上一篇有提到匿名型別

這一篇要講的是同時出現的C#利器

讓我們在操作類別的時候更有彈性

 

舊的寫法, 再類別宣告的時候只能用他既定的建構子去宣告

之後要指定他的屬性必須老老實實的用

public void oldWrite()
{
      Student stu = new Student();
      stu.Name = "John";
      stu.Age = 13;
}

 

但是現在我們可以用

public void oldWrite()
{
      Student stu = new Student( Name = "John", Age = 13);
}

 

是不是簡潔很多了, 在這MSDN被命名為  集合初始設定式

可以參考http://msdn.microsoft.com/zh-tw/library/bb384062.aspx

 

 

而選擇性引數跟具名引數則是讓我們操作Method更方便

 

例如說我們有一個方法是這樣

public static  string CombineName(string szFirst, string szLast)
{
        return string.Format("{0} {1}", szFirst, szLast);
}

 

舊的呼叫方法是國小在教的東西 就不多提了

而有了具名引數  我們可以這樣呼叫

public void test1()
{
     Console.WriteLine(CombineName(last: "lee", first: "john"));
     Console.WriteLine(CombineName("john", last: "lee"));
}

 

之類的變化, 可以不用限定參數順序

在閱讀上也更直接

 

(不過坦白說我很少這樣用就是了…  很討厭程式碼加多餘的字進去  orz)

 

 

而選擇性引數則是讓參數可以有預設值

 

例如說把CombineName改為這樣

public static  string CombineName(string szFirst, string szLast = "Lee")
{
        return string.Format("{0} {1}", szFirst, szLast);
}
	

在呼叫的時候就不一定可以省略szLast, 只提供First就好

 

不過使用上有限制, 尤其要注意順序,  可省略的引數必須要放在後面

 

但是用起來很方便, 可以讓程式碼更清爽

 

也更好維護(?)   或許有的人覺得這樣更難維護吧  orz

 

 

更詳細的使用方法可以參考MSDN

http://msdn.microsoft.com/zh-tw/library/dd264739.aspx

 

--

本文可能有理解錯誤  或不盡不實的地方

請路過的前輩不要客氣  用力打醒

這會是我們成長的主要養分