C Ref引數引發的思考

2021-09-05 19:10:07 字數 1371 閱讀 9489

先看**:

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層停靠,醫院人多滿載後就不開門了。還有我們經常見的高層電梯,低層電梯。我就想閒下來的時候寫個電梯控制的小程式。彌補一下空虛的心靈。夜深人靜的晚上我就在想,如果讓我寫我會...