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


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

可选参数在函数定义中包含一个默认值。如果我们在调用时没有传递可选参数的值,则使用默认值。

有不同的方法可以使参数成为可选的。

使用默认值

示例

 在线演示

using System;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         //Value2 is not passed as it is optional
         OptionalMethodWithDefaultValue(5, 10);
         //Value2 is passed
         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 传递了参数,则默认值将被覆盖。

使用 Optional 属性

示例

 在线演示

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 is {value1 + value2}");
      }
   }
}

输出

以上代码的输出为

Sum is 5
Sum is 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}");
      }
   }
}

错误 - 可选参数必须出现在所有必需参数之后。

更新于: 2020-08-04

5K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告