1.引數傳遞預設都是傳遞棧空間裡面儲存的內容
2.如果新增了ref那麼傳遞的都是棧空間位址,而不再是棧空間裡面的內容
3.如果新增了out,那麼傳遞的也是棧空間的位址
1view code//寫乙個方法計算乙個int型別陣列中每個元素的總和以及最大值和最小值
2///
3///
4///
5///
6///
7static
void gatvalue(int intarray, ref
int sum, ref
int max, ref
intmin)823
24//
最小值25
if (min >intarray[i])
2629
}30 }
1mian函式static
void main(string
args)2;
4int sum = 0, max = 0, min = 0;5
//int sum = 0, max = 0, min;
//如果min變數在使用的時候,沒有賦值,在使用ref關鍵字傳遞引數的時候,就會報錯,錯誤訊息:「使用了未賦值的區域性變數」
6 gatvalue(intarray, ref sum,ref max,ref
min);
7 console.write(sum+"
"+max+"
"+min);
8console.readkey();
9 }
1min變數out傳遞引數static
void main(string
args)2;
4//int sum = 0, max = 0, min = 0;
5int sum = 0, max = 0
, min;
6 gatvalue(intarray, ref sum,ref max,out
min);
7 console.write(sum+"
"+max+"
"+min);
8console.readkey();9}
1011
1213
static
void gatvalue(int intarray, ref
int sum, ref
int max, out
intmin)
1429
30//
最小值31
if (min >intarray[i])
3235
}36 }
1錯誤的例子,out引數在使用的時候,必須在方法體內,為變數賦值static
void gatvalue(int intarray, ref
int sum, ref
int max, out
intmin)217
18///
/最小值
19//
if (min > intarray[i])
20//23}
24}2526
2728
static
void main(string
args)29;
31//
int sum = 0, max = 0, min = 0;
32int sum = 0, max = 0
, min;
33 gatvalue(intarray, ref sum,ref max,out
min);
34 console.write(sum+"
"+max+"
"+min);
35console.readkey();
36 }
這裡第四個**段,裡面,使用了out引數傳遞的變數min,在方法體內沒有被賦值,執行的時候會報錯:「 控制離開當前方法之前必須對 out 引數「min」賦值 「
區別:ref傳遞的引數必須先賦值再使用;
out可以賦值也可以不賦值,但是在方法體內必須重新賦值。
ref引數和out引數
引數對於每個學習程式設計的人都很清楚,在任何程式中都不可能沒有引數,下面我就說說乙個特殊的引數型別,其實這個也不算什麼特殊引數了,在c 中已經沒有像c中那樣的指標的概念了,但是有的時候有些時候要寫特殊的處理,其實c 中並不是完完全全放棄這個概念的,下面就寫下這類特殊的引數。引用引數ref 當乙個引數...
C 的out引數和ref引數
剛學c 的時候看過out引數和ref引數的用法,但是一直沒有根據實際專案做過。今天寫webservice介面的時候用到了 本來我是寫乙個方法查詢乙個資料庫,返回乙個dataset給別人呼叫,沒問題,完成了 我的上篇部落格寫有 但是專案總是變化 的,有人要求同時將dataset的總記錄條數也返回給他們...
C 使用ref和out傳遞陣列
c 使用ref和out傳遞陣列 一 使用ref引數傳遞陣列 陣列型別的ref引數必須由呼叫方明確賦值。因此,接受方不需要明確賦值。接受方陣列型別的ref引數能夠修改呼叫方陣列型別的結果。可以將接受方的陣列賦以null值,或將其初始化為另乙個陣列。請閱讀引用型引數。示例 在呼叫方法 main方法 中初...