一、
值型別和引用型別:
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...