1. 程式人生 > 其它 >C#新功能--命名引數與可選引數

C#新功能--命名引數與可選引數

  可能是篇幅太短了,又被打入冷宮了.先重發一篇加上可選引數.本來不想加這個呢,因為可選引數可能大家用的會多點.其實這

兩個在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賦值.在使用可選引數的過程中,由於命名引數的出現,更提供了許多方便.