關於值型別與引用型別,值傳遞與引用傳遞的歸納,總結一下,分享給大家:
<1>值型別預設存放在棧中,但當值型別是在引用型別中宣告的時候,則存放在其所在的引用型別的堆中。
<2>引用型別存放在堆中,其在堆中的記憶體位址放在棧中。
<1>值型別引數可以值傳遞,也可以通過ref、out關鍵字修飾,進行引用傳遞。
<2>引用型別引數只能以引用傳遞方式傳遞。
值傳遞:方法呼叫時,實際引數把它的值傳遞給對應的形式引數,形式引數只是用實際引數的值初始化自己的儲存單元內容,是兩個不同的儲存單元,所以方法執行中形式引數值的改變不影響實際引數的值。
**如下:
class program
//值傳遞
static void test(int a)
}結果:1
引用傳遞:也稱為傳位址。方法呼叫時,實際引數是物件(或者陣列),這是實際引數與形式引數指向同乙個位址,在方法執行中,對形式引數的操作實際是就是對實際引數的操作,這個結果在方法結束後,被保留了下來,所以方法執行中形式引數的改變將會影響實際引數。
**如下:
class program
;//通過ref關鍵字,對值型別變數a進行引用傳遞
test(ref a,p);
console.writeline(a);
console.writeline(p.age);
console.write("press any key to continue . . . ");
console.readkey(true);
}//引用傳遞
static void test(ref int a,person p)
}class person
}結果:2
13 什麼是值傳遞和引用傳遞???
基本資料型別是值傳遞 值傳遞是指在呼叫方法時將實際引數複製乙份 傳到方法中 如果在方法中對引數進行修改 不會影響原來引數 引用資料型別是引用傳遞 引用傳遞是指在呼叫方法時將實際引數的位址 傳到方法中 如果在方法中對引數進行修改 原來引數也會改變 public class test 將c的記憶體位址傳...
值傳遞和引用傳遞
幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...
值傳遞和引用傳遞
1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...