C ref和out的使用

2022-05-07 22:30:16 字數 1358 閱讀 5796

1.用途:

在c#中通過使用方法來獲取返回值時,通常只能得到乙個返回值。因此,當乙個方法需要多個返回值的時候,就需要用到ref和out

2.概述:

ref關鍵字使引數按引用傳遞。其效果是,當控制權傳遞**用方法時,在方法中對引數所作的任何修改都將反映在該變數中。若要使用ref引數,則方法定義和呼叫方法都必須顯式使用ref關鍵字

out關鍵字會導致引數通過引用來傳遞。這與ref關鍵字類似,不同之處在於ref要求變數必須在傳遞之前進行初始化。若要使用out引數,方法定義和呼叫方法都必須顯示使用out關鍵字

3.異同點

同:1.都能返回多個返回值

2.若要使用ref和out引數,則方法定義和呼叫方法必須顯示使用ref和out

關鍵字。在方法中對引數的設定和改變將會直接影響函式的呼叫之處

異:1.ref指定的引數在函式呼叫的時候必須初始化,不能為空的引用。而out指定

的引數在函式呼叫時候可以不初始化

2.out指定的引數在進入函式時會清空自己,必須在函式內部賦初值。而ref指

定的引數不需要

4.口訣:

ref有進有出,out只出不進

5.例項

1

//ref傳遞引數之前必須賦初值

2static

void main(string

args)3

");8console.readkey();9}

10static

void getvalue(ref

int x,ref

inty)

11 ");

13 x = 50

;14 y = 60

;15 }

結果:

1

static

void main(string

args)2

");9console.readkey();10}

11static

void getvalue(out

int x,out

inty)

12 ");

15 x = 50

;16 y = 60

;17 console.writeline($" "

);18 }

結果:

C ref和out的區別

首先 兩者都是按位址傳遞的,使用後都將改變原來引數的數值。其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是只出不進。需求假...

c ref 和 out 的區別

乙個用關鍵字 ref 標示,乙個用 out 標示。牽扯到資料是引用型別還是值型別。一般用這兩個關鍵字你是想呼叫乙個函式將某個值型別的資料通過乙個函式後進行更改。傳 out 定義的引數進去的時候這個引數在函式內部必須初始化。否則是不能進行編譯的。ref 和 out 都是傳遞資料的位址,正因為傳了位址,...

C ref和out學習總結

c 中ref和out傳遞引數總結,兩個都可用來傳遞引數,ref使用時必須先進行初始化,out則不需要,只要在返回之前賦值即可,文字廢話到此,下面直接上例子 ref例子 class a private string name string.empty private int count 0 getna...