可选参数就是意味着一些参数是可选的,调用者不必显示的指定他们的值。对于任何这种参数,都将给定一个默认值
static void Main(string[] args)
{
Print_NO(2);
Console.ReadLine();
}
/// <summary>
/// 可选参数必须出现在必选参数之后,否则将会抛出未于实参对应的异常
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="z"></param>
static void Print(int a,int b=10,int z=20)
{
Console.WriteLine("a=" + a + ",b=" + b + ",z=" + z + "");
}
/// <summary>
/// 无必选参数,则不需要指定
/// </summary>
/// <param name="b"></param>
/// <param name="z"></param>
static void Print_NO( int b = 10, int z = 20)
{
Console.WriteLine("b=" + b + ",z=" + z + "");
}
/// <summary>
/// 参数数组不能为可选类型
/// </summary>
/// <param name="names"></param>
static void PrintError_1(params string[] names=null)
{
}
/// <summary>
/// ref/out不能为可选参数
/// </summary>
/// <param name="name"></param>
static void PrintError_2(ref string name="default")
{
}
命名实参的基本概念就是在指定实参的值时,可以同时指定相应参数的名称。编译器将判断参数的命名是否正确,并将指定的值赋给这个参数
static void Main(string[] args)
{
Print(2, 10, 20);//正常调用
Print(2, b: 10, z: 20);//指定部分实参
Print(a:2, 10, z: 20);//指定命名实参时必须在位置实参之后,否则编译器会报错
Console.ReadLine();
}
static void Print(int a, int b, int z)
{
Console.WriteLine("a=" + a + ",b=" + b + ",z=" + z + "");
}