可空类型即引用类型
不可空类型即值类型
可空,即可 = null;
注意点:在不可null类型后加?就可以为null
int? i = null;
int?的范围大于int(可null的大于不可为null)
即 int a = 1;
int? b = a;这是可以的,但相反将int?赋值给int就不行。
wpf中用到的多,如CheckBox的IsChecked属性即为bool?类型
javascript中null属于初始类型(Ⅰ)之一
而用alert(typeof (null)); 则出来是object ,object是属于两种类型的另外一种引用类型(Ⅱ)
这是为什么呢?
Maybe
初始类型是存在栈中的,而引用类型是在堆中开辟空间(在栈中存储地址,指向堆中内存)
在栈中,开辟的空间是固定的,运行速度相对较快
在堆中,开辟的空间是可扩展的,运行速度相对较慢
各自有利有弊,也算符合能量守恒定律
说回null,null只是一个占位符(在栈中占一个位置),并未在堆中开辟内存。
作用:可以清空对象,当一个引用类型无用的时候,赋值成null,内存就被释放了。(猜测- -)