可能是篇幅太短了,又被打入冷宮了.先重發一篇加上可選參數.本來不想加這個呢,因為可選參數可能大家用的會多點.其實這
兩個在VB中早就有了,C#中,在.net4發布之前是不能使用的.看到這個比較興奮,我想大家也有好多人不知道,所以就強烈的想與大家
分享一下.
一、命名參數
命名參數會潛在的改變編寫代碼的方式.這個新功能能使代碼更容易閱讀和理解.
例如,看一下System.IO名稱空間中的File.Copy()方法,它一般構建為
File.Copy(@"C:\mytestFile.txt",@"C:\myOtherFile.txt",true);
在這行代碼中,這個簡單的方法使用3個參數,但實際傳遞給Copy()方法的是什么內容?除非
知道這個方法的前前后后,否則 僅看一眼該方法,很難判斷出該方法會執行何種操作.而通過命名
參數,就可以在提供參數值之前使用代碼中的參數名,如下所示:
File.Copy(sourceFileName: @"C:\mytestFile.txt", destFileName: @"C:\myOtherFile.txt", overwrite:true);
現在通過命名參數,就很容易閱讀和理解這行代碼將執行的操作.使用命名參數對最終的編譯
沒有影響,命名參數僅用在應用程序的編碼中.
二、可選參數
可選參數允許為方法的一些參數提供默認值,並允許使用者重載類型,因此,即使只有一個方法,也能處理所有變體
public void test(string a, string b, int c, bool d=true,bool e=false) { }
調用:
public void invoke() { test("li", "dd",7); test("li", "dd", 7,false); test("li", "dd", 7, true,false); }
這里也可以用到上述的命名參數:
test("li", "dd", 7, e:true);
這樣d參數依然可以使用默認值,如果沒有命名參數,想給e賦值,必須還要給d賦值.在使用可選參數的過程中,由於命名參數的出現,更提供了許多方便.
