引用傳遞問題

2021-06-03 01:31:29 字數 571 閱讀 3866

using system;

public class test1

,", p.name, num);

}static void a1(person p, int num)

}public class person

}

其實這兩個引數都是值傳遞,num就不用說了,它是值型別,所以傳遞到方法中的是它的副本,而p是引用型別,但是它沒有加ref或者out,所以它是以值傳遞引用型別,引用型別的變數不直接包含其資料;它包含的是對其資料的引用。當通過值傳遞引用型別的引數時,有可能更改引用所指向的資料,如某類成員的值。但是無法更改引用本身的值;也就是說,不能使用相同的引用為新類分配記憶體並使之在塊外保持。

在樓主的示例中,p為引用型別,在未使用 ref 引數的情況下傳遞給方法a1。在此情況下,將向方法傳遞指向p的引用的乙個副本。但是在a1方法中使用 new 運算子來分配新的記憶體部分,將使a1中的p引用新的person,因此,這之後的任何更改都不會影響原始person p(它是在 main 內建立的)。實際上,本示例中建立了兩個person物件,乙個在 main 內,乙個在 a1 方法內

JAVA引用傳遞問題

可能有些同學覺得,只要是引用傳遞,對引用的修改直接影響著原物件,其實不然,只有對引用物件的內部做了修改,才會影響原物件,如果直接將引用修改了,則對原物件沒有影響,唯一的影響就是 這個被修改的引用,現在不是原來物件的引用,而是新物件的引用。引用傳遞指的是傳遞的時候,傳遞的是物件的引用。如果對引用的內部...

值傳遞和引用傳遞的問題

先看看下面這段 的輸出結果 public class example public static void main string args public void change string str,char ch 結果是 tarena and gbc 解釋 1.為什麼string字串的值是不可變...

python 引用傳遞所致問題

首先,我們檢視下面這段 所導致的錯誤 for subnet info index in subnet infos import pdb pdb.set trace network policy network policy src ip subnet info index cidr for subn...