- 值类型?
值类型的变量直接包含这种类型的值,结构是值类型。
- 引用类型?
引用类型的变量保存的是对此对象的引用,即实际数据的地址。引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
类(class)是引用类型。
-可以这样理解两者的区别:
值类型相当于你的住房,而引用类型相当于你住房的地址,你可以将这个地址告诉任何一个朋友,他们都能够依赖这个地址找到你的家。
-结构和类的区别:
相同点:
默认都有一个无参数的构造函数。
不同点:
值类型(类)的值存在栈上。当类中写一个有参数的构造函数,默认无参数的构造函数被替代掉了。类中写结构函数参数列表中参数
个数可以不确定。
引用类型(结构)栈上存的的是地址,堆上存的是值。当结构中写一个有无参数的构造函数,默认的无参数的构造函数还存在,没有
被替代掉,在结构中写构造函数,要把所有的字段都要完全赋值。
下面的代码展示了值类型和引用类型的区别:
class class1
{
public int value = 0;
}
class Program
{
static void Main(string[] args)
{
int val1 = 0;
int val2 = val1;
val2 = 123;
class1 ref1 = new class1();
class1 ref2 = ref1;
ref2.value = 123;
Console.WriteLine("values:{0},{1}",val1,val2);
Console.WriteLine("refs:{0},{1}",ref1.value,ref2.value);
Console.ReadKey();
}
}