標籤:style blog http color os ar strong 資料 sp
儲存不同:
實值型別儲存在堆棧中,參考型別儲存在託管堆上.
實值型別舉例:
i=20;
j=i;
上面的語句在記憶體的兩個地方儲存值都是20;
參考型別舉例:
class Vector { public long value { get; set; } } class Program { static void Main(string[] args) { Vector x, y; x = new Vector(); x.value = 30; y = x; Console.WriteLine(y.value); y.value = 50; Console.WriteLine(x.value); Console.ReadKey(); } }
View Code
上面的代碼,x賦值,y的值也跟著改變,y賦值,x的值也跟著改變,結果為30和50
不一樣的參考型別String
string s1,s2 ;
s1 = "123";
s2 = s1;
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
s1 = "456";
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
Console.ReadKey();
結果:s1:123
s2:123
s1:456
s2:123
從結果可見,改變s1的值對s2沒有影響,這是因為:字串是不可改變的,修改其中一個字串,就會建立新的string對象,而
另一個字串不會發生任何變化.
小結:在C#中基礎資料型別 (Elementary Data Type)如bool和long都是實值型別,如果聲明一個bool變數,並給他賦予給另一個bool變數的值,
在記憶體中就會有兩個bool值,如果以後修改第一個bool的值,第二個bool變數的值也不會改變.如果要把自己的類型
定義為實值型別就應把它聲明為一個結構.
C#實值型別與參考型別