顾名思义,可选参数不是强制性参数,它们是可选参数。它有助于排除某些参数的参数。或者我们可以说在可选参数中,没有必要在方法中传递所有参数。这个概念在C#4.0中引入。
重要事项:
- 您可以在“方法” ,“构造函数” ,“索引器”和“委托”中使用可选参数。
- 每个可选参数都包含一个默认值,这是其定义的一部分。
- 如果我们没有将任何参数传递给可选参数,那么它将采用其默认值。
- 可选参数的默认值是一个常量表达式。
- 可选参数始终在参数列表的末尾定义。换句话说,方法,构造函数等的最后一个参数是可选参数。
例子:
static public void scholar(string fname, string lname, int age = 20, string branch = “Computer Science”)
在上面的示例中, 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方法包含这四个参数中的四个参数,两个是常规参数,即fname和lname ,两个是可选参数,即age和branch 。这些可选参数包含其默认值。当您不传递这些参数的值时,可选参数将使用其默认值。当您为可选参数传递参数时,它们将采用传递的值而不是其默认值。
如果我们使用除最后一个参数以外的可选参数会发生什么?
它将产生编译时错误“可选参数不能在必需参数之前”,因为可选参数始终在参数列表的末尾定义。换句话说,方法,构造函数等的最后一个参数是可选参数。
例子:
// 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");
}
}
编译时错误:
prog.cs(11,26): error CS1737: Optional parameter cannot precede required parameters