C#也越来越像VB.NET,具名参数与选用参数这两个功能在VB.NET里老早就有了,但C#一直到C#4.0版本才添加,添加这个特性后,以后在使用方法时就不用选择那么多的overload方法,而且调用方法也变得非常直观与方便,参数可以设置默认值,且不用每个参数都传入。如果你用C#写过Office Automation的程序就知道为何选用参数有多么棒了
那么我们来做一个演示程序吧:
static void Main(string[] args)
{
Console.Write("标准调用: Sum(1,2,3)");
Sum(1,2,3);
Console.Write("忽略Z参数,Sum(1, 2)等同于调用Sum(1, 2,7)因为Z的默认值为7");
Sum(1, 2);
Console.Write("忽略y与z参数,Sum(1)等同于调用Sum(1,5,7)");
Sum(1);
//C#4.虽然支持具名参数与选用参数,不过不允许你这样写:
//Sum(1,,3);//C#不允许忽略参数传入
//C#4.0具名参数与选用参数的语法如下:
Console.WriteLine();
Console.WriteLine("*******C#4.0具名参数与选用参数的语法如下:********");
Console.Write("想忽略第二个参数,那第三个参数就用具名参数法Sum(1,z:3)");
Sum(1,z:3);
Console.Write("全部具名参数法Sum(x:1, z: 3)");
Sum(x:1, z: 3);
Console.Write("传入具名参数是不需考虑顺序的, Sum(z: 3, x: 1)");
Sum(z: 3, x: 1);
Console.ReadKey();
}
/// <summary>
/// 声明一个M方法,
/// 其中第二、第三个参数是包含默认值的选用参数
/// </summary>
/// <param name="x"></param>
/// <param name="y">默认选用参数</param>
/// <param name="z">默认选用参数</param>
static void Sum(int x, int y = 5, int z = 7)
{
int total = x + y + z;
Console.WriteLine("求和:{0}",total.ToString());
}