C#的数据类型、栈、堆
1.数据类型分为基本数据类型和引用数据类型。基本数据类型就是int,short,long,float,double,byte,boolean,char这几种。引用数据类型就是string,数组,集合,类等。
2.栈(stack):一种位于内存中先进后出的数据结构,用于存放变量。
3.堆(heap):为引用数据类型分配空间的内存区域。对象存放在堆中,把对象的地址值传给栈上的变量。
4.在类进行编译的时候,编译器默认创建无参构造方法,对在构造体内的结构成员进行初始化,所有的值类型成员赋值0,引用类型赋值null。
5.如下,在“=”左边的ValPoint vPoint1,在线程栈上创建一个ValPoint类型的变量vPoint1,结构的所有成员均未赋值,在进行new ValPoint()之前,将vPoint1压到栈上。“=”右边的new操作符不分配内存,也不是创建实例。只是调用ValPoint类的默认构造方法,通过构造方法初始化vPoint1结构的所有字段。
1 ValPoint vPoint1 = new ValPoint();
6.如下,这种情况会在栈上创建一个临时变量,然后再使用构造函数对临时变量进行初始化。
1 Console.WriteLine((new ValPoint()).x);
7.“==”和equals的区别:“==”用在基本数据类型时比较的是值是否相等,用在引用数据类型时比较地址值是否相等。equals只能用在引用类型上,比较地址值是否相等,string中的equals方法已经重写,用来比较字符串内容是否相等。
8.拆箱和装箱:装箱就是把基本数据类型转换成引用数据类型。先在堆上生成新的对象,接着把栈上变量的值传给堆上的对象中,然后把创建的对象地址传回栈上的变量中。拆箱相反。