C 使用引數陣列

2022-03-22 23:48:19 字數 2328 閱讀 4913

過載,是指在相同的作用域內,宣告多個同名的方法。用以對不同型別或數量的引數的引數執行相同的操作。比如,可以求兩個或者三個 int型別數中的最大值,我們可以編寫這樣的方法實現:

class

util

public

static

int max(int num1,int num2,int

num3)

}

顯然,當引數數目不確定的時候,過載不是乙個好的解決辦法,這時候,可以使用陣列作為引數傳入。以上面的問題為例:

class

util

int currentmax=paramlist[0

];

foreach(int i in

paramlist)

}return

currentmax;

}}

為了使用max方法判斷2個int值得最小值,可以像下面這麼寫:

int array=new

int[2

];array[

0]=first;

array[

1]=second;

int max=util.max(array);

為了使用max方法判斷2個int值得最小值,可以像下面這麼寫:

int array=new

int[3

];array[

0]=first;

array[

1]=second;

array[

2]=third;

int max=util.max(array);

雖然上面的辦法避免了大量的過載,但是額外多了很多**來填充陣列,但是如果用 params 關鍵字來宣告乙個params陣列,一切就ok了,還是用上面的例子,用法如下:

class

util

int currentmax=paramlist[0

];

foreach(int i in

paramlist)

}return

currentmax;

}}

這時候如果要求四個int型別的數中的最大值,方法為: util.max(first,second,third,fourth);

編譯器會自動完成填充陣列的過程,再將陣列的作為引數傳遞進去。

那麼,對於型別不同的引數,同樣可以使用   params object

關於params陣列,要注意一下幾點:

1、只能為一位陣列使用 params 關鍵字,不能為多為陣列使用,否則編譯不能通過。

2、不能只依賴 params 關鍵字來過載乙個方法。 params 關鍵字不構成方法簽名的一部分,例如:

//

編譯時錯誤:重複的宣告

public

static

int max(int

paramlist)

...public

static

int max(params

int paramlist)

...

3、不允許為 params 陣列指定 ref 或 out修飾符。

4、params 陣列必須是方法的最後乙個引數,沒個方法中也只能有乙個 params 陣列引數。

//

編譯時錯誤

public

static

int max(params

int paramlist,int

i)...

5、非params方法優先

public

static

int max(int first,int

second)

...public

static

int max(params

int paramlist)

...

對於上面的過載方法,傳入兩個 int 引數時,呼叫上面的方法,傳入其它任意數量的 int 引數時,呼叫下面的方法。這樣做並非多餘,實則起到優化作用。

6、有歧義的過載編譯不能通過。

//

編譯時錯誤

public

static

int max(params

int paramlist)

...public

static

int max(int i, params

int paramlist)

...

如上,程式無法分辨呼叫哪乙個方法。

C 引數陣列

引數陣列,通過關鍵字params定義引數陣列,paras型別引數主要用於在對陣列長度未知 可變 的情況下進行函式宣告,呼叫時可以傳入個數不同的實參,具備很好的靈活性。首先給出乙個具體的例子介紹引數陣列 params 的具體用法,首先定義乙個帶有引數陣列的方法 using system public ...

c 引數陣列

有時,當宣告乙個方法時,不能確定要傳遞給函式作為引數的引數數目,c 引數陣列解決了這個問題,引數陣列通常用於傳遞未知數量的引數給函式 params關鍵字 在使用陣列作為形參時,c 提供了params關鍵字,使呼叫陣列為形參的方法時,既可以傳遞陣列實參,也可以只傳遞一組陣列,params使用格式為 p...

C 引數陣列與陣列引數

1 陣列作為引數來傳遞時,當呼叫這個函式時裡面的引數需要new乙個陣列 2 引數陣列就是在函式的陣列引數前面加上params,當呼叫函式傳遞陣列時不需要再new乙個,只需要傳遞任意個跟陣列引數型別相同的數就可以 using system namespace 1 引數陣列 return sum sta...