先看**:
using system;
using system.collections.generic;
using system.text;
namespace testref
private static void chgval(int i)
private static void chgvalref(ref int i)
static void main(string args);
int val = 5;
console.writeline("original: "+ val);
chgval(val);
console.writeline("chgval: "+ val);
console.writeline("#####");
console.writeline("original: "+ val);
chgvalref(ref val);
console.writeline("chgvalref: "+ val);
console.writeline("#####");
foreach(int a in arr)
console.writeline(">>>" + a);
chgarrval(arr);
console.writeline("#####");
foreach (int b in arr)
console.writeline(">>>>" + b);}}
} -------------------以下是執行結果:
output:
original: 5
chgval: 5
#####
original: 5
chgvalref: 32
#####
>>>3
>>>4
>>>5
>>>6
>>>7
>>>8
#####
>>>>9
>>>>16
>>>>25
>>>>36
>>>>49
>>>>64
続行するには何かキーを押してください . . .
###########################
你看出來了嗎?本來ref的本意是
the ref keyword causes arguments to be passed by reference.引數的引用傳遞,就是說引用過去,執行完了,不用返回值也能改變原變數的值.但是你看陣列不用ref就可以.可見陣列的使用的時候,就是乙個位址引用而已,並不是實際的操作,要不怎麼不用ref都可以改變呢?
呵呵,不知道對不對,自己覺得是這樣吧.
C ref和out引數的用法
ref引數 通過值傳遞引數是預設的,但是如果想要改為通過引用傳遞引數,可以用ref關鍵字。如果把乙個引數傳遞給方法,並且前面帶有ref關鍵字,那麼,該方法對變數的任何改變都會影響原始物件的值。傳遞到 ref 引數的引數必須最先初始化。這與 out 不同,後者的引數在傳遞之前不需要顯式初始化。例子 s...
停課引發的思考
快一周沒去機房了,好懷念在在學習的日子,以至於經常夢到自己在設計程式。唉,說到底還是自己太貪玩,沒有珍惜這來之不易的學習環境。當10期大部分人因遲到被禁止進的時候,我們幾個在大大咧咧的學習,甚至連週末兩天都沒有做到按時上課。結果,讓公尺老師動怒,被判了個無期徒刑。失去了才知道珍惜,也好,這樣再次得到...
電梯引發的思考
有了孩子之後,精力確實有限。珍惜現在的所有的所謂的悠閒時光吧。之前在婦幼醫院看過電梯,上面寫著 層層都停,單層停靠,雙層停靠,1 8層停靠,醫院人多滿載後就不開門了。還有我們經常見的高層電梯,低層電梯。我就想閒下來的時候寫個電梯控制的小程式。彌補一下空虛的心靈。夜深人靜的晚上我就在想,如果讓我寫我會...