具名參數與可選參數的好處是避免方法重載寫一堆同名不同參的方法,節省代碼,提高效率,但是如果方法名相同,傳回類型不同,方法還是得分開寫,如:
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)
具名參數可選參數隻适用于具有相同傳回類型的方法重載,參數不多的情況下使用,如果有幾十個參數情況下,建議還是用方法重載,不然代碼不易維護,其他接手代碼的人容易亂