1、值型別:
包括:sbyte、short、int、long、float、double、decimal(以上值型別有符號)
byte、ushort、uint、ulong(以上值型別無符號)
bool、char
2、引用型別:
包括:物件型別、動態型別、字串型別
1、值型別:
byte b1 = 1解釋:;byte b2 =b1;
console.writeline(",。
", b1, b2);
b2 = 2
;console.writeline(",。
", b1, b2);
console.readkey();
byte b1 = 1;宣告b1時,在棧內開闢乙個記憶體空間儲存b1的值1。
byte b2 = b1;宣告b2時,在棧內開闢乙個記憶體空間儲存b1賦給b2的值1。
console.writeline(",。", b1, b2);輸出結果為1,1。
b2 = 2;將b2在棧中儲存的值1改為2。
console.writeline(",。", b1, b2);輸出結果為1,2。
2、引用型別:
string str1 = new解釋:string ;
string str2 =str1;
for (int i = 0; i < str1.length; i++)
console.writeline();
for (int i = 0; i < str2.length; i++)
console.writeline();
str2[
2] = "d"
;for (int i = 0; i < str1.length; i++)
console.writeline();
for (int i = 0; i < str2.length; i++)
console.readkey();
string str1 = new string ;宣告str1時,首先在堆中開闢乙個記憶體空間儲存str1的值(假設:0a001),然後在棧中開闢乙個記憶體空間儲存0a001位址
string str2 = str1;宣告str2時,在棧中開闢乙個記憶體空間儲存str1賦給str2的位址
for (int i = 0; i < str1.length; i++)
console.writeline();
for (int i = 0; i < str2.length; i++)
console.writeline();
輸出結果為:
a b c
a b c
str2[2] = "d";修改值是修改0a001的值
for (int i = 0; i < str1.length; i++)
console.writeline();
for (int i = 0; i < str2.length; i++)
輸出結果為:
a b d
a b d
3、string型別:(特殊)
string str1 = "解釋:abc"
;string str2 =str1;
console.writeline(",。
", str1, str2);
str2 = "
abd"
;console.writeline(",。
", str1, str2);
console.readkey();
string str1 = "abc";宣告str1時,首先在堆中開闢乙個記憶體空間儲存str1的值(假設:0a001),然後在棧中開闢乙個記憶體空間儲存0a001位址
string str2 = str1;宣告str2時,首先在堆中開闢乙個記憶體空間儲存str1賦給str2的值(假設:0a002),然後在棧中開闢乙個記憶體空間儲存0a002的位址
console.writeline(",。", str1, str2);輸出結果為:
abcabc
str2 = "abd";修改str2時,在堆中開闢乙個記憶體空間儲存修改後的值(假設:0a003),然後在棧中修改str2位址為0a003位址
console.writeline(",。", str1, str2);輸出結果為:
abcabd
堆中記憶體空間0a002將被垃圾**利用。
以上是我對值型別與引用型別的理解,希望可以給需要的朋友帶來幫助。
值型別與引用型別區別
凡是直接繼承自system.valuetype的都是值型別,其他就是引用型別 區別就是乙個是傳值,乙個是傳引用 c 中值型別與引用型別的值傳遞與引用傳遞 值型別 結構體,數值型別 int,double,char,bool型,列舉,可空型別 nullable 引用型別 陣列,使用者定義的類 介面 委託...
值型別與引用型別的區別
1.值型別儲存的是數值,引用型別儲存的是位址。2.值型別存放在棧中,引用型別存放在堆中。3.值型別不可以是null,引用型別可以使null。4.值型別不具有多型性,引用型別具有多型性。5.值型別沒有繼承性,引用型別有繼承性。6.值型別有裝箱與未裝箱,引用型別只有裝箱。using system usi...
C 值型別與引用型別的區別
net將資料型別分為值型別 value type 和引用型別 reference type 乙個具有值型別 value type 的資料存放在棧 內的乙個變數中。即是在棧中分配記憶體空間,直接儲存所包含的值,其值就代表資料本身。值型別的資料具有較快的訪問速度。乙個具有引用型別 reference t...