C#值類型和引用類型
值類型和引用類型通俗來講:就是存儲的地方不一樣,
值類型 int double bool char struct(結構) enum(枚舉) 存放在托管堆上邊,
引用類型:string object class 存放到棧上。
簡單來說 比如 int a=1; int b=a;那麽為b賦值的時候,就是把a的值復制一份,在內存中心創建一塊區域保存b的值。a和b的存儲是獨立的
class a=new class(); class b=a;那麽為b賦值的時候,僅僅把a的引用地址復制給b。這樣a和b就指向內存中的同一個地址。a和b是關聯的。
值類型是對象與對象之間的相互賦值
引用類型 賦的是引用地址 沒有值的傳遞
class Program
{
public class Staff
{
//引用類型
public string FirstName { get; set; }
public string LastName { get; set; }
public int Salary { get; set; }
}
public struct Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Salary { get; set; }
}
}
static void Main(string[] args)
{
Staff s1 = new Staff { FirstName = "123" };
Staff s2 = s1; //只賦值地址 不賦值
s2.FirstName = "abc";
Employee e1 = new Employee { FirstName = "123" };//e1="123"
Employee e2 = e1;
e2.FirstName = "abc";
Console.WriteLine("s1=" + s1.FirstName + ", e1=" + e1.FirstName);
}
最後輸出s1=abc e1=123
C#值類型和引用類型