📜  C#|可选参数

📅  最后修改于: 2021-05-29 14:34:29             🧑  作者: Mango

顾名思义,可选参数不是强制性参数,它们是可选参数。它有助于排除某些参数的参数。或者我们可以说在可选参数中,没有必要在方法中传递所有参数。这个概念在C#4.0中引入。

重要事项:

  • 您可以在“方法” ,“构造函数” ,“索引器”和“委托”中使用可选参数。
  • 每个可选参数都包含一个默认值,这是其定义的一部分。
  • 如果我们没有将任何参数传递给可选参数,那么它将采用其默认值。
  • 可选参数的默认值是一个常量表达式。
  • 可选参数始终在参数列表的末尾定义。换句话说,方法,构造函数等的最后一个参数是可选参数。

例子:

在上面的示例中, int age = 20字符串 branch =“ Computer Science”是可选参数,并且具有其默认值。让我们借助示例来讨论可选参数的概念。

// C# program to illustrate the
// concept of optional parameters
using System;
  
class GFG {
  
    // This method contains two regular
    // parameters, i.e. fname and lname
    // And two optional parameters, i.e.
    // age and branch
    static public void scholar(string fname, 
                               string lname,
                               int age = 20,
         string branch = "Computer science")
  
    {
        Console.WriteLine("First name: {0}", fname);
        Console.WriteLine("Last name: {0}", lname);
        Console.WriteLine("Age: {0}", age);
        Console.WriteLine("Branch: {0}", branch);
    }
  
    // Main Method
    static public void Main()
    {
  
        // Calling the scholar method
        scholar("Ankita", "Saini");
        scholar("Siya", "Joshi", 30);
        scholar("Rohan", "Joshi", 37,
           "Information Technology");
    }
}

输出:

First name: Ankita
Last name: Saini
Age: 20
Branch: Computer science
First name: Siya
Last name: Joshi
Age: 30
Branch: Computer science
First name: Rohan
Last name: Joshi
Age: 37
Branch: Information Technology

说明:在上面的示例中, Scholar方法包含这四个参数中的四个参数,两个是常规参数,即fnamelname ,两个是可选参数,即agebranch 。这些可选参数包含其默认值。当您不传递这些参数的值时,可选参数将使用其默认值。当您为可选参数传递参数时,它们将采用传递的值而不是其默认值。

如果我们使用除最后一个参数以外的可选参数会发生什么?

它将产生编译时错误“可选参数不能在必需参数之前”,因为可选参数始终在参数列表的末尾定义。换句话说,方法,构造函数等的最后一个参数是可选参数。

例子:

// C# program to illustrate the concept
// of optional parameters
using System;
  
class GFG {
  
    // This method contains two regular
    // parameters, i.e. fname and lname
    // And one optional parameters, i.e. age
    static public void scholar(string fname,
                 int age = 20, string lname)
    {
        Console.WriteLine("First name: {0}", fname);
        Console.WriteLine("Last name: {0}", lname);
        Console.WriteLine("Age: {0}", age);
    }
  
    // Main Method
    static public void Main()
    {
  
        // Calling the scholar method
        scholar("Ankita", "Saini");
    }
}

编译时错误: