可選引數與命名引數 可變數量的引數

2021-09-06 13:43:22 字數 1624 閱讀 8128

一.可選引數與命名引數

可選引數: 可以為部分或者全部形參分配預設值. 然後,呼叫這些方法的**可以選擇不指定部分實參,接受其預設值.命名引數:在使用可選引數時,可以通過制定引數名稱的方法為其傳遞實參.

二.準則與規則

有預設值的引數必須放在沒有預設值的所有引數之後。

預設值必須是編譯時能確定的常量值。例如:基元型別;列舉型別;能設為null的引用型別等。但不能設定為物件的方法和屬性等。

//可選引數

static int

add(int a, int b = 2)

static void main(string args)

使用命名引數傳遞引數時,可以按照任何順序。

命名的實參傳遞必須放在實參列表的尾部,也就是,非命名引數應該放在命名引數之前。 如果形參標識了

ref/out,命名實參應使用如下語法:

static void main(string args)

//方法宣告

private static void m(ref int32 x)

引數的呼叫順序

在命名引數出現前,函式的引數是從左到右依次呼叫。那麼有了命名引數後,函式的呼叫順序是否被改了呢?

先看乙個例子:

static void main(string args)

static int p1()

static int p2()

static int p3()

static void testfun(int a, int b, int c)

,b:,c:", a, b, c));

}

如上述**,它的執行結果如下:

p1 p2

p3 a:1,b:2,c:3

可以看出,引數的執行順序是p1→p2→p3.

那麼使用命名引數後呢?順序是否有變化呢?

static void main(string args)

執行結果如下:

p3 p2

p1 a:1,b:3,c:2

順序變成了:p3→p2→p1

為什麼是這樣呢?

那是因為編譯器會先呼叫使用命名引數的引數,然後再執行剩餘的引數。

可變數量的引數

應用場景:方法需要處理的引數數量不可預定,例如:連線任意數量的字串。

使用方法:使用params關鍵字修飾引數陣列。

使用優點:不用在呼叫方顯示的將引數轉換為陣列,可以隨意的傳入引數,使**更為優美,簡潔。

class program

static void main(string args)

}

php 可變數量引數

php 在使用者自定義函式中支援可變數量的引數列表。在 php 5.6 及以上的版本中,由 語法實現 在 php 5.5 及更早版本中,使用函式func num args func get arg 和 func get args in php 5.6 php基礎知識詳解教程 案列一 在php 5.6...

方法可變數量的引數

宣告乙個可變數量的引數 static int add params int values add 1,2,3 這時,由於params關鍵字,是可以編譯通過和執行的。params只能應用於方法引數中的最後乙個。在c 編譯器發現add 1,2,3 時,會先尋找是否有add int i,int j,int...

方法可變數量的引數

宣告乙個可變數量的引數 static int add params int values add 1,2,3 這時,由於params關鍵字,是可以編譯通過和執行的。params只能應用於方法引數中的最後乙個。在c 編譯器發現add 1,2,3 時,會先尋找是否有add int i,int j,int...