值类型就是所有继承自System.ValueType的类型
引用类型就是包括:类、数组、接口、委托、字符串等,表示指向存储在内存堆中的数据的指针或引用
由值类型到引用类型要进行装箱(Boxing)操作
由引用类型转为值类型要进行拆箱(UnBoxing)操作
本质:
-值类型的变量本身就存储着“实例”的内容,即变量的内容就是值本身,有几个变量就有几份值;
-而引用类型的变量,存储的是该引用实例在内存中的首地址,即变量的内容只是个内存地址,多个变量可以指向同一个实例。
例子:
int a = 1;
int b = a;
此时在内存中有两个值,a和b的值都是1,a = 3后,b仍然是1。
TextBox a = new TextBox();
TextBox b = a;
a.Text = "asdfsdf";
MessageBox.Show(b.Text);
可以发现b.Text也是"asdfsdf",因为a和b都指向同一个TextBox实例,所以反过来b.Text="sss"后,a.Text也会是"sss"