1.堆与栈:
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,使用方便。一些引用类型的数据存在于堆中。
栈用于存储固定长度的数据,存放的是数据本身而不是该数据在内存中的地址。
1.引用类型与值类型的区别:
(1)值类型变量存放的是内容本身,而引用类型的数据存放的是数据在内存中的地址。
(2)值类型数据存放在堆栈中,而值类型数据存放在堆中。
(3)值类型数据的默认值是0,引用类型数据的默认值是空。
(4)值类型传递参数的方法是复制值,引用类型数据传递参数的方法是复制引用(传地址)。
2.装箱和拆箱
装箱:是将值类型数据转换成引用类型数据
拆箱:是将引用类型数据转换成值类型数据
3.C#中的简单数据类型
(1)byte,无符号8位数,值为0~255
(2)sbyte,有符号8位数,值为-128~127
(3)short,有符号16位数,范围在-32768~32767
(4)ushort,无符号16位数,范围在0~65535
(5)int,有符号32位数,范围在-2147483648~2147483647
(6)uint,无符号32位数
(7)long,有符号64位数
(8)ulong,无符号64位数
(9)bool,表示逻辑上的真或者假
(10)char,16位Unicode字符
(11)decimal,有符号128位数据
(12)double,64位浮点数,有15到216位小数
(13)float,32位浮点值,有7位小数
4.运算符和表达式
(1)variable++相当于variable=variable+1
variable--相当于variable=variable-1 += 表示运算结果=操作数1+操作数2,表达式X +=5,求值X=X+5,如果X=10则结果为15
-= 表示运算结果=操作数1-操作数2,表达式X -=5,求值X=X-5,如归哦X=10则结果为5
同理可知*=,/=以及%=等。
(2)逻辑运算符有以下四种:
&&,对两个表达式进行逻辑“与“运算,操作数1&&操作数2
||对两个操作数执行逻辑“或”运算,操作数1||操作数2
!对两个表达式执行逻辑“非”运算,!操作数
()将操作数强制转换为给定的数据类型,(数据类型)操作数
(3) 比较运算符
==检查两个数是否相等,其表达式为:操作数1==操作数2
!=检查两个数是否不相等,其表达式为:操作数1!=操作数2
(4)前置和后置自加减运算符
前置自加表达式:num2=++num1,计算方法:num1=num1+1,num2=num1
后置自加表达式:num2=num1++,计算方法: num2=num1,num1=num1+1
后置自加和后置自减同理,注意:前置是先把自己加1或减1,然后把自己赋给另外一个变量;
后置是想把自己赋给另外一个变量,然后把自己加1或减1
(5)三元运算符
是if...else的简化形式,他可以计算一个条件,如果条件为真就返回第一个值,如果条件为假就返回第二个值
(6)其他运算符
checked与unchecked运算符:当对整数类型进行操作,而其值超过该数据类型的范围时checked
与unchecked可以指定CLR如何进行堆栈溢出处理。
is运算符:is运算符可以检查对象是否与特定的类型兼容。
sizeof运算符:使用sizeof运算符可以确定堆栈中值类型需要的长度。