值型別和引用型別概念梳理

2022-07-26 10:12:06 字數 949 閱讀 3225

一、

值型別和引用型別:

a)值型別:儲存在堆疊中,包括

int、

float

、demical

、bool

、char

型別b)

引用型別:儲存在託管堆上,包括

object

、string

型別i.

裝箱boxing

:值型別

àobject

型別1.

int i = 100; object x = i; //

隱式裝箱

2.int i = 100; object x = object(i); //

顯示裝箱

ii.拆箱

unboxing

:object型別à

值型別1.

int i = 100; object x = i; int j = (int)x; //

顯示,只可顯示拆箱

iii.

string

特殊性:

1.把乙個字串賦給另乙個字串時,會得到對記憶體中同乙個字串的兩個引用。但是修改其中乙個字串,會建立乙個全新的

string

物件,而另乙個字串沒有改變。

例:strings1 = 「old string」;

ß託管堆分配

string

物件, s1

指向它string s2 = s1;

ß新增指向剛分配的

string

物件的引用

s2, s2 = 「old string」

s1 = 「new string」;ß更改

s1的值,實際託管堆新建乙個

string

物件,讓

s1改為指向它,

s2不變,保持原有指向

, s2 = 「old string」

值型別與引用型別(概念)

值型別 直接儲存值,在棧上儲存其值。注 值型別變數宣告後,不管是否已經賦值,編譯器為其分配記憶體 引用型別 儲存對其值的引用,在棧上儲存位址,在堆上儲存值 注 引用型別當宣告乙個物件時,只在棧中分配一小片記憶體用於容納乙個位址,而此時並沒有為其分配堆上的記憶體空間 值型別與引用型別有哪些?值型別 常...

引用型別和值型別

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

引用型別和值型別

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