C#中的值傳遞和引用傳遞,與Java中的值,引用傳遞用什麼不同?

先搞清什麼是值類型和引用類型。
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等關鍵字
發佈了12 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章