不能不提的選擇性引數跟具名引數
這篇比較像是給自己一個筆記
常常會忘記怎麼用
上一篇有提到匿名型別
這一篇要講的是同時出現的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
--
本文可能有理解錯誤 或不盡不實的地方
請路過的前輩不要客氣 用力打醒
這會是我們成長的主要養分