顾名思义,可选参数不是强制性参数,它们是可选参数。它有助于排除某些参数的参数。或者我们可以说在可选参数中,没有必要在方法中传递所有参数。此概念在C#4.0中引入。在这里,我们讨论了实现可选参数的不同方法。在C#中,有四种不同类型的可选参数实现,如下所示:
- 通过使用默认值:您可以通过使用默认值来实现可选参数。这是实现可选参数的最简单,最简单的方法。这样,您只需在方法定义中简单地用其默认值定义可选参数即可。并始终记住,可选参数是方法的参数列表中的最后一个参数。在默认值方法中,当您不传递可选参数的值时,可选参数将使用其默认值,而当您为可选参数传递参数时,则它们将采用传递的值而不是其默认值。
示例:在这里,我们有两个常规参数,即str1和str2,以及一个可选参数,即str3及其默认值。在这里,当我们不将任何值传递给可选参数时,并且当我们在方法调用中传递可选参数的值时,可选参数将使用该默认值,然后它将采用传递的值。
// C# program to illustrate how to create // optional parameters using default value using System; class GFG { // Method containing optional parameter // Here str3 is a optional parameter // with its default value static public void my_add(string str1, string str2, string str3 = "GeeksforGeeks") { Console.WriteLine(str1 + str2 + str3); } // Main method static public void Main() { my_add("Welcome", "to"); my_add("This", "is", "C# Tutorial"); } }
输出:WelcometoGeeksforGeeks ThisisC# Tutorial
- 通过使用方法重载:您可以通过使用方法重载来实现可选参数概念。在方法重载中,我们创建具有相同名称但具有不同参数列表的方法。此方法不是实现可选参数的纯粹方法,但是您可以通过使用此方法来实现可选参数的概念。
示例:在这里,我们有两个名称相同的方法,但是这些方法的参数列表不同,即第一个my_mul方法仅接受一个参数,而第二个mu_mul方法则接受三个参数。
// C# program to illustrate how to create // optional parameters using method overloading using System; class GFG { // Creating optional parameters // Using method overloading // Here both methods have the same // name but different parameter list static public void my_mul(int a) { Console.WriteLine(a * a); } static public void my_mul(int a, int b, int c) { Console.WriteLine(a * b * c); } // Main method static public void Main() { my_mul(4); my_mul(5, 6, 100); } }
输出:16 3000
- 通过使用OptionalAttribute:您可以通过使用OptionalAttribute来实现可选参数。要实现可选参数,首先需要在程序中添加System.Runtime.InteropServices命名空间,然后使用方括号中的Optional关键字在方法中定义参数之前创建可选参数。 OptionalAttribut的默认值为零。
示例:在这里,我们使用OptionalAttribute创建一个可选参数,这里num2是my_mul方法中的可选参数。
// C# program to illustrate how to create // optional parameters using OptionalAttribute using System; using System.Runtime.InteropServices; class GFG { // Method containing optional parameter // Using OptionalAttribute static public void my_mul(int num, [ Optional ] int num2) { Console.WriteLine(num * num2); } // Main Method static public void Main() { my_mul(4); my_mul(2, 10); } }
输出:0 20
- 通过Params关键字:您可以使用params关键字实现可选参数。它允许您将任意数量的参数传递给方法。但是您只能对一个参数使用params关键字,并且该参数是方法的最后一个参数。此方法不是实现可选参数的纯粹方法,但是您可以通过使用此方法来实现可选参数的概念。
示例:在这里,使用params关键字创建可选参数。在此, a1是可选参数,您可以在其中从零到最多传递任意数量的变量。
// C# program to illustrate how to create // optional parameters using params keyword using System; class GFG { // Method containing optional // parameter Using params keyword static public void my_mul(int a, params int[] a1) { int mul = 1; foreach(int num in a1) { mul *= num; } Console.WriteLine(mul * a); } // Main method static public void Main() { my_mul(1); my_mul(2, 4); my_mul(3, 3, 100); } }
输出:1 8 900