C 方法的out引數和ref引數詳解

2021-10-12 06:57:57 字數 1530 閱讀 3944

當乙個方法有多個返回值且是不同型別時,我們可以利用方法的引數:out引數和ref引數。

我們先來看看最簡單的引數傳遞:

static

void

main

(string

args)

public

static

intadd

(int a,

int b)

一看就知道返回結果是10,20,30;

那麼再來看看方法的ref引數,與最簡單的引數傳遞區別是b用ref修飾了,

static

void

main

(string

args)

public

static

intadd

(int a,

refint b)

返回結果是10,200,210;

總結:1.如果方法引數用ref修飾了,那引數在方法外也要用ref修飾;

2.如果方法引數用ref修飾了,在方法裡沒有給引數賦值,那在方法外要給它賦值;

3.如果方法引數用ref修飾了,在方法裡和方法外都給了引數賦值,那最後引數值為方法裡賦的值。

看完了ref引數,再來看看out引數吧:

static

void

main

(string

args)

public

static

intadd

(int a,

outint b)

返回結果為10,200,210;

概念:out是內部為外部變數賦值,一般用在有多個返回值的地方

總結:1.如果方法引數用out修飾了,那引數在方法外也要用out修飾;

2.如果方法引數用out修飾了,那麼在方法外可以不給引數賦值,但要在方法裡面給引數賦初值;

3,如果方法引數用out修飾了,在方法裡和方法外都給了引數賦值,那最後引數值為方法裡賦的值。

例如:

static

void

main

(string

args)

public

static

intadd

(int a,

outint b)

大家可能會認為結果是100,200,300,其實不是喔,返回的是10,200,300.為什麼會這樣呢?仔細看就知道了,a沒有用out修飾,所以它的值是我們方法外部賦的值10,b既在方法裡也在方法外賦了值,但用out修飾了,所以b最終值值裡面賦的200;

總結:1.如果方法引數用out或ref修飾了,那引數在方法外也要用out或ref修飾;

2.如果方法引數用out修飾了,那麼可以在方法外可以不給引數賦值,但一定要在方法裡給引數賦值,不然會報錯;如果用ref修飾了,可以不在方法裡賦值,但要在方法外賦值,不然會報錯;

3.不管引數用out還是ref修飾,都是使引數值按引用傳遞。

C 的out引數和ref引數

剛學c 的時候看過out引數和ref引數的用法,但是一直沒有根據實際專案做過。今天寫webservice介面的時候用到了 本來我是寫乙個方法查詢乙個資料庫,返回乙個dataset給別人呼叫,沒問題,完成了 我的上篇部落格寫有 但是專案總是變化 的,有人要求同時將dataset的總記錄條數也返回給他們...

ref引數和out引數

引數對於每個學習程式設計的人都很清楚,在任何程式中都不可能沒有引數,下面我就說說乙個特殊的引數型別,其實這個也不算什麼特殊引數了,在c 中已經沒有像c中那樣的指標的概念了,但是有的時候有些時候要寫特殊的處理,其實c 中並不是完完全全放棄這個概念的,下面就寫下這類特殊的引數。引用引數ref 當乙個引數...

c 方法引數ref和out區別

c 方法引數ref和out區別 params 關鍵字可以指定採用數目可變的引數的 方法引數。可以傳送引數宣告中所指定型別的逗號分隔的引數列表或指定型別的引數陣列。還可以不傳送引數。在方法宣告中的 params 關鍵字之後不允許任何其他引數,並且在方法宣告中只允許乙個 params 關鍵字。class...