值类型和引用类型通俗来讲:就是存储的地方不一样,
值类型 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