如何在 C# 中调用非尾随参数作为默认参数?
C# 为函数提供了一个很棒的特性,即函数参数可以具有默认值。当一个函数在没有参数的情况下被调用时,参数获取它的默认值。或者换句话说,默认参数是在方法声明中提供的值,如果在函数调用期间未提供参数的值,则自动分配该值,则将为参数分配默认值。默认值是使用 assignment(=)运算符分配的,例如“keywordname = value”。
- 默认参数的默认值是一个常量表达式。
- 每个默认参数都有一个默认值,这是其定义的一部分。
- 默认参数始终定义在方法中参数列表的末尾。当我们使用除最后一个参数以外的默认参数时,编译器会报错。
- 它也被称为选项参数。
句法:
public void methodName(arg1, arg2, arg3 = default_Value, arg4 = default_Value)
调用非尾随参数和默认参数
当我们将非尾随参数称为默认参数时,通常它不会按预期工作。通过下面的例子可以更好地理解。
static void defArgs(int a, int b = 1, int c = 2)
{
// Printing the values
Console.WriteLine(“value of a = ” + a + “, ” + “value of b = ” +
b + “, ” + “value of c = ” + c);
}
// We want to assign b value as its default value and pass a, c as arguments to the defArg method
defArgs(100, 200);
在这里,我们想将 100 分配给 a,将 200 分配给 c,并保留 b 的默认值,但实际发生的是 100 分配给 a,200 分配给 b,而 c 保留其默认值。在调用 defArg() 方法时,我们可以调用 b(即非尾随参数)作为默认参数,方法是在 b 之后的参数使用 parameter_name 和冒号
方法:
- Create a method, for example defArgs(). In the method definition, take 3 arguments and for the 2nd and 3rd argument assign default values using assignment operator(=).
- Now, from the main method call the non-trailing arguments of defArg() method as default argument. For example defArg(100, 200), here we want to assign 100 to a and 200 to c, and wanted to assign default value to b. So, using parameter_name and colon for the arguments following the b when calling defArg() method.
Here 100 assigned to a, 200 assigned to c and b is left with its default value.
- In the defArg() method print the values of the arguments using Console.WriteLine() method.
C#
static void defArgs(int a, int b = 1, int c = 2, int d = 3){}
defArgs(100, c:200);