C# 中的可选参数是什么?

csharpserver side programmingprogramming更新于 2025/10/2 9:52:17

默认情况下,方法的所有参数都是必需的。包含可选参数的方法在调用时不会强制传递参数。这意味着我们调用方法时无需传递参数。

可选参数在函数定义时包含默认值。如果我们在调用时未传递可选参数值,则将使用默认值。

有多种方法可以使参数可选。

使用默认值

示例

using System;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
          // Value2 为可选,因此未传递
         OptionalMethodWithDefaultValue(5, 10);
          // Value2 已传递
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1, int value2 = 5){
          Console.WriteLine($"Sum is {value1 + value2}");
      }
   }
}

输出

以上代码的输出为

Sum is 10
Sum is 15

在上面的例子中,方法 OptionalMethodWithDefaultValue(int value1, int value2 = 5) 的 value2 具有默认值 5。因此,如果在调用时未为 value2 传递任何参数,则将采用默认值 5;如果为 value2 传递了参数,则默认值将被覆盖。

使用可选属性

示例

using System;
using System.Runtime.InteropServices;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         OptionalMethodWithDefaultValue(5, 10);
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1, [Optional]int value2){
         Console.WriteLine($"Sum 为 {value1 + value2}");
      }
   }
}

输出

上述代码的输出为

Sum 为 5
Sum 为 15

此处使用 [Optional] 属性指定可选参数。

另外,需要注意的是,可选参数应始终在参数末尾指定。例如,− OptionalMethodWithDefaultValue(int value1 = 5, int value2) 将引发异常。

示例

using System;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         OptionalMethodWithDefaultValue(5, 10);
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1 = 5, int value2){
         Console.WriteLine($"Sum is {value1 + value2}");
      }
   }
}

Error − Optional Parameters must appear after all required parameters.


相关文章