|
$a = 2;
$b = $a; //在php中這里把b的地址指向a 所以b此時(shí)也等于2;區(qū)別就在這
$a = 5; //這時(shí)php中a的值又重新寫(xiě)值,所以php核心這時(shí)才會(huì)把b重新分配一個(gè)地址,然后把a(bǔ)原先的值進(jìn)行拷貝。這就是 寫(xiě)時(shí)拷貝 原理 , 也就是說(shuō),除非進(jìn)行寫(xiě)操作,否則值類(lèi)型就是指向一個(gè)地址。
而C#中。值類(lèi)型的復(fù)制。永遠(yuǎn)都是新建一個(gè)地址 如:
int a = 2;
int b = a; //此時(shí)不管有沒(méi)有進(jìn)行a的二次寫(xiě)入。.NET都會(huì)把給b分配一個(gè)新的內(nèi)存空間(值存在棧空間的)。然后再把a(bǔ)的值拷貝一份
注意: C#中 值類(lèi)型的值是直接存放棧中的。而引用類(lèi)型,引用地址是存放在棧中,實(shí)際的值則存放在堆中。根據(jù)棧的地址,找堆中的值.
php技術(shù):淺談PHP與C#的值類(lèi)型指向區(qū)別的詳解,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。