具名参数与可选参数的好处是避免方法重载写一堆同名不同参的方法,节省代码,提高效率,但是如果方法名相同,返回类型不同,方法还是得分开写,如:
public int Method(int x)
{
return x;
}
public string Method(int x,int y)
{
return string.Empty;
}
public bool Method(int x, int y,int z)
{
return false;
}
以上代码示列虽然方法同名,但是返回类型不同,这种情况还是得分开写,
下来我们按照以前的写法实现方法重载如下:
public void Method(int x)
{
}
public void Method(int x,int y)
{
}
public void Method(int x, int y,int z)
{
}
因为有不同参数类型和参数个数,我们需要写三个方法供调用,如果有五六七八个参数,意味着我们要写五六七八个方法,太麻烦了,我们来看看用具名参数和可选参数的用法,一个方法即可搞定,代码如下:
public void Method(int x,int y = 0,int z = 1)
{
Console.WriteLine("x={0},y={1},z={2}", x, y, z);
}
如上代码,给方法的参数赋默认值,如果调用方法的时候,没有传值,就会使用默认值
比如:
Method(2) x=2,y=0,z=1
Method(2,3) x=2,y=3,z=1
那么如过只想给x,z传值,y用默认值,怎么办尼?
Method(2,z:4) x=2,y=0,z=4
这里需要注意的是具名参数不受顺序影响,如:
Method(5,z:9,y:10)
具名参数可选参数只适用于具有相同返回类型的方法重载,参数不多的情况下使用,如果有几十个参数情况下,建议还是用方法重载,不然代码不易维护,其他接手代码的人容易乱