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關鍵字,迫使值引數通過引用傳遞給方法,則給方法對變數所作的修改都會影響原來物件的...