C# 具名參數及選擇性參數

摘要:C# 具名參數及選擇性參數

使用需求: .NET 4.0以上版本

使用原因:  可以減少選取多載方法的時間

使用方式:


        static void Main(string[] args)
        {
            TestChooseParameter("CLRIS",score:70);
        }

        private static void TestChooseParameter(string Name, int id = 3, int score = 60)
        {
            Console.WriteLine(Name);
            Console.WriteLine(id);
            Console.WriteLine(score);
            Console.ReadLine();
        }


      //NAME = CLRIS
      //id = 3
      //score = 70

正確寫法

TestChooseParameter("CLRIS",score:70);

錯誤寫法

TestChooseParameter(score:70, "CLRIS");   //具名參數需要出現在固定的引數之後

 

函式中就可以預設該欄位的初始值,若呼叫時沒有宣告,則帶入這初始值

另外一點好處是,這樣不用的欄位在宣告時也不用去輸入

像是上方的例子有三個引數但是我卻只有輸入兩個引數

 

 

PS: 要小心模擬兩可的函式

GetInfo();

public void GetInfo(int a =10){ //Do Some Thing}

public void GetInfo(int a =10, int b = 20){ //Do Some Thing}

這種編譯就會錯誤了,因為根據使用方法兩個都可以,因此需要給最低可供辨識的引數給編譯器


        static void Main(string[] args)
        {
            TestChooseParameter( score:100);
        }

        private static void TestChooseParameter(string Name="A", int id = 1, int score = 60)
        {
            Console.WriteLine(Name);
            Console.WriteLine(id);
            Console.WriteLine(score);
            Console.ReadLine();
        }

        private static void TestChooseParameter(string Name = "B", int id = 2)
        {
            Console.WriteLine(Name);
            Console.WriteLine(id);
            Console.ReadLine();
        }

這樣會呼叫3個引數的那個函式