可选参数

考虑前面是我们的函数定义与可选参数。

private static double FindAreaWithOptional(int length, int width=56)
       {
           try
           {
               return (length * width);
           }
           catch (Exception)
           {
               throw new NotImplementedException();
           }
       }

这里我们将 width 的值设置为可选,并将值设置为 56.如果你注意,IntelliSense 本身会显示可选参数,如下图所示。

StackOverflow 文档

Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();

请注意,我们在编译时没有收到任何错误,它将为你提供如下输出。

StackOverflow 文档

使用可选属性

实现可选参数的另一种方法是使用 [Optional] 关键字。如果未传递可选参数的值,则将该数据类型的默认值分配给该参数。Optional 关键字存在于“Runtime.InteropServices”命名空间中。

using System.Runtime.InteropServices;  
private static double FindAreaWithOptional(int length, [Optional]int width)
   {
       try
       {
           return (length * width);
       }
       catch (Exception)
       {
           throw new NotImplementedException();
       }
   } 

area = FindAreaWithOptional(120);  //area=0

当我们调用函数时,我们得到 0,因为第二个参数没有传递,int 的默认值是 0,因此乘积为 0。