給物件引用變數賦值(轉)

ba發表於2007-08-15
給物件引用變數賦值(轉)[@more@]物件變數的賦值和你直覺期望的不同。例如,你認為下面的程式段是做什麼呢?

Box b1 = new Box();
Box b2 = b1;

你可能認為,變數b2被賦值為變數b1物件引用的一個複製。也就是,你可能認為b1和b2引用的是不同的物件,但實際情況卻相反,b1和b2將引用同樣的物件。將b1賦值給b2並沒有分配任何記憶體或對原物件做任何部分的複製。由於它們是同一個物件,因此透過變數b2對物件的改變也將影響b1所對應的物件。


儘管b1和b2都引用同一個物件,但是他們之間沒有任何其他的關係。例如,接下來對b1的賦值僅僅使b1脫離(unhook )初始物件,而沒有影響物件或影響b2。

Box b1 = new Box();
Box b2 = b1;
// ...
b1 = null;

這裡,b1被設定為空,但是b2仍然指向原來的物件。

注意:當你將一個物件引用賦值給另一個物件引用時,你並沒有建立該物件的一個複製,而是僅僅對引用的一個複製。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958066/,如需轉載,請註明出處,否則將追究法律責任。

相關文章