再次理解按值和按引用傳遞型別

2022-03-09 16:19:22 字數 932 閱讀 8217

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

public

person() 

public

void

printinfo()

}public

static

void

sendapersonbyvalue(person p)

static

void

main(

string

args)

}}輸出的結果,以前我注意過,不過現在又忘了,結果自己的結果出了問題,這個是個很簡單的問題,如果用

按引用public

static

void

sendapersonbyvalue(

refperson p)

static

void

main(

string

args)

{person fred 

=new

person(

"fred", 

12);

fred.printinfo();

sendapersonbyvalue(

reffred);

fred.printinfo();

console.read();

結果是不同的。

區別:按值傳遞型別複製了指向呼叫者物件的引用,sendapersonbyvalue()方法與呼叫者指向同乙個物件,所以可以改變物件狀態資料,但是無法指向乙個新的物件,和常量指標類似。

理解了還是挺簡單的ref這個關鍵字也在許多地方多用用。

按值傳遞和按引用傳遞

對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...

Java按值傳遞和按引用傳遞

如果傳遞引數是基本型別或其包裝類,則按值傳遞,改變引數的值,實際引數的值不變。public static void main string args public static void changei integer i 如果傳遞引數是類或陣列,則按引用傳遞,改變物件的引用,實參的引用不會改變,但...

JavaScript 按值傳遞 按引用傳遞

1 值的比較 引用的比較 首先,原始值的比較是值的比較 只有在它們值相等的時候它們才相等 比如簡單的 var a1 10 var a2 10 console.log a1 a2 true 其次,物件的比較並非值的比較 物件的比較均是引用的比較,當且僅當它們引用同乙個基物件時,它們才相等。即使兩個物件...