ref關鍵字 out關鍵字 區別

2022-05-23 09:21:16 字數 1374 閱讀 9867

ref 和 out 關鍵字比較怪,他們在方法的引數中使用,今天對他們做了認真的研究

msdn上的定義:

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

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

做了乙個測試**

1using

system;23

namespace

ref4

",i);

11reftest(

refi);

12console.writeline(

"之後的i=

",i);

1314

intj;

15outtest(

outj);

16console.writeline(

"之後的j=

",j);

1718

//todo: implement functionality here

1920

console.write(

"press any key to continue . . . ");

21console.readkey(

true

);22}23

private

static

void

reftest(

refint

i)24

2728

private

static

void

outtest(

outint

j)2932}

33}結果為:

之前的i=10

之後的i=110

之後的j=200

press any key to continue . . .

如果再在main()加入這樣**

intk;

outtest(

refk);

console.writeline(

"之後的k=

",k);

出現k未被初始化的提示!

一目了然,ref和out的用法,以及兩者之間的差別

本人寫的比較淺顯,園子裡還有很多兄弟的

例如這裡還包括了過載的分析,屬性等等。比較全面。。

ref 關鍵字out關鍵字

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace outandref ref修飾方法的引數,在呼叫的時候必須...

C ref關鍵字和out關鍵字的區別

1 在不使用關鍵字 比如ref關鍵字 out關鍵字等 修飾函式的情況下,大部分函式的引數是以值傳遞的方式,也就是說,呼叫函式 在使用引數 比如mynumber 時,是把該引數複製多乙份,然後將其傳遞給 被呼叫函式 使用,言外之意就是對 被呼叫函式 中此變數的任何修改都不影響 呼叫函式 中原有引數的值...

ref和out關鍵字初解

ref和out關鍵字初解 引數可以通過引用和值傳遞給方法。通過引用傳遞給方法的變數可以有呼叫它的方法作自由改變,所作的修改會影響原來的變數的值 在c 中,除非特別說明,所有的引數都是值傳遞。這是預設情況,也可以使用ref關鍵字,迫使值引數通過引用傳遞給方法,則給方法對變數所作的修改都會影響原來物件的...