📜  在C#中使方法参数为可选的不同方法

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

顾名思义,可选参数不是强制性参数,它们是可选参数。它有助于排除某些参数的参数。或者我们可以说在可选参数中,没有必要在方法中传递所有参数。此概念在C#4.0中引入。在这里,我们讨论了实现可选参数的不同方法。在C#中,有四种不同类型的可选参数实现,如下所示:

  1. 通过使用默认值:您可以通过使用默认值来实现可选参数。这是实现可选参数的最简单,最简单的方法。这样,您只需在方法定义中简单地用其默认值定义可选参数即可。并始终记住,可选参数是方法的参数列表中的最后一个参数。在默认值方法中,当您不传递可选参数的值时,可选参数将使用其默认值,而当您为可选参数传递参数时,则它们将采用传递的值而不是其默认值。

    示例:在这里,我们有两个常规参数,即str1str2,以及一个可选参数,即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
    
  2. 通过使用方法重载:您可以通过使用方法重载来实现可选参数概念。在方法重载中,我们创建具有相同名称但具有不同参数列表的方法。此方法不是实现可选参数的纯粹方法,但是您可以通过使用此方法来实现可选参数的概念。

    示例:在这里,我们有两个名称相同的方法,但是这些方法的参数列表不同,即第一个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
    
  3. 通过使用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
    
  4. 通过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