先搞清什麼是值類型和引用類型。 C#值類型數據直接在他自身分配到的內存中存儲數據,而C#引用類型只是包含指向存儲數據位置的指針。 基礎數據類型(string類型除外):包括整型、浮點型、十進制型、布爾型。 整型包括:sbyte、byte、char、short、ushort、int、uint、long、ulong 這九種類型;浮點型就包括 float 和 double 兩種類型;十進制型就decimal ;布爾型就是 bool 型了。結構類型:就是 struct 型。枚舉類型:就是 enum 型。引用類型有五種:class、interface、delegate、object、string 引用類型作爲參數時: 1、在修改變量本身時,結果類似於值傳遞,即不會改變傳遞前的變量的值 2、在修改變量的屬性或字段時,纔是引用傳遞,會影響到傳遞前的變量的值 3、參數使用了ref後,纔是真正的引用傳遞,不管修改變量本身還是修改變量的屬性或字段,都會影響到傳遞前的變量的值 值傳遞:傳的是對象的值拷貝。(即函數內參數對象是調用時傳遞的對象的棧中對象的拷貝。) 引用傳遞:傳的是棧中對象的地址。(即函數內參數對象與調用時傳遞的對象完全是同一棧中對象。) 在Java中: 1. 基本類型和基本類型變量被當作參數傳遞給方法時,是值傳遞。在方法實體中,無法給原變量重新賦值,也無法改變它的值。 2. 對象和引用型變量被當作參數傳遞給方法時,是引用傳遞。在方法實體中,無法給原變量重新賦值,但是可以改變它所指向對象的屬性。 和c#中的一樣,只不過Java中沒有ref, out等關鍵字
C#中的值傳遞和引用傳遞,與Java中的值,引用傳遞用什麼不同?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.