值類型與引用類型

     C#中一個參數的類型有值類型與引用類型,像int、bool、double、decimal、char、struct、enum等是屬於值類型,而像string、自定義類、數組等是屬於引用類型數組

     (1)值類型繼承自System.valueType,而引用類型繼承自System.Object。spa

     (2)值類型的長度是固定的,引用類型的長度是可變的,而且值類型的值不能爲null,若是要將值類型的值賦值爲null,就要將值類型定義爲可空的類型  int? a=null;code

     (3)在儲上值類型存儲在棧中,而引用引用類型存儲在堆中,引用類型一樣在棧中開闢了空間,用來存放指向堆中的地址blog

      

//定義一個Person類
public class Person
{
public string Name{get;set;}
public int Age{get;set;}
}
public void Fun()
{
Person p=new person();
p.name="11";

Person p1=p;//把p在棧中開闢的地址複製給p1,這樣p1就指向p在堆中開闢的空間
p1.name="22";
console.writeline(p.name)//輸出的結果是"22";
};
Person p1=p是把p在棧中開闢的地址假設爲0x0001,這個地址指向的是p在堆中開闢的一塊空間,賦值給了p1,這樣p1的地址也就爲0x0001,這樣p1就指向了0x0001這個地址指向的空間

      而引用類型中string做爲一個特殊的存在,具備不可變性的特色繼承

string str1 = "aa!";
string str2 = "bb";
string str3 = str2;
Console.WriteLine("{0}\n{1}\n{2}", str1, str2,str3);ci

//輸出的結果是  aa bb bb

相關文章
相關標籤/搜索