值型別和引用型別

2021-10-18 13:18:04 字數 706 閱讀 5323

值型別:

byte,short,int,long,float,double,decimal,char,bool 和 struct 統稱為值型別。

引用型別:

string 和 class統稱為引用型別。

值型別和引用型別的區別

1.將乙個值型別變數賦給另乙個值型別變數時,將複製包含的值。引用型別變數的賦值只複製對物件的引用,而不複製物件本身。

2.值型別不可能派生出新的型別:所有的值型別均隱式派生自svstem valuetyoe。但與引用型別相同的是,結構也可以實現介面。

3.值型別不可能包含null值:

4.每種值型別均有乙個隱式的預設建構函式來初始化該型別的預設值。i

值型別的值存在了棧上

類引用型別,堆疊上蹲的是位址,值,在堆上

類當中預設的有乙個無引數的建構函式,

當在類中寫乙個有引數的建構函式,預設無引數的建構函式被乾掉了

類中寫建構函式的引數列表中引數個數可以不確定

結構在結構中預設的也有乙個無引數的建構函式

當在結構中寫乙個有引數的建構函式,預設的無引數的建構函式還有,沒被乾掉

在結構中寫建構函式,要把所有的字段都要完全賦值

類是引用型別,結構是值型別

棧是編譯期間糾紛配好的記憶體空間,因此**中必須就棧的大小有明確的定義:區域性值型別變數,值型別引數等都在棧記憶體中

堆是程式設計師行期間動態分配的記憶體空間,

引用型別和值型別

c 是一種型別安全的語言。每乙個變數都要求定義為乙個特定的型別,並且要求儲存在變數中的值只能是這種型別的值。變數既能儲存值型別,也可以儲存引用型別,還可以是指標。這一課將講述前兩種型別,關於指標的討論我們將在下一課中進行。下面是關於值型別和引用型別不同點的概論 如果乙個變數v儲存的是值型別,則它直接...

引用型別和值型別

c 中值型別和引用型別作為方法引數傳遞的時候其實都可以說是 值 的傳遞,只不過這裡的 值 指代的東西有所區別。當方法的引數為值型別時,方法傳遞的是值本身的值。當方法的引數為引用型別時,方法傳遞的則是應用型別的引用的位址,也就是引用型別位址在棧上的值。舉個引用型別作為引數傳遞的例子 static vo...

值型別和引用型別

為了更好地說明兩種型別之間的區別,借用如下的 來說明 值型別引用型別 記憶體分配地點 分配在棧中 分配在堆中 效率效率高,不需要位址轉換 效率低,需要進行位址轉換 記憶體 使用完後,立即 使用完後,不是立即 等待gc 賦值操作 進行複製,建立乙個同值新物件 只是對原有物件的引用 函式引數與返回值 是...