什麼是 null?
null是所謂的文字關鍵字
什麼是文字關鍵字
計算機是二進制表示一切,文字關鍵字就是以文字的形式表示某個特定的二進制值。比如ture,false也是文字關鍵字。可以認為true表示0x0001;false表示0x0000的bool值。
C#1.X中的null=空指針
MSDN中的解釋:null 關鍵字是表示不引用任何對象的空引用的文字值。null 是引用類型變量的默認值。
重點:區分引用類型和值類型。
空指針的實際含義
當發現s中全部為0時,則認為該指針為空指針。即不引用(指向)任何對象。
為什麼C#1.x值類型不能為null呢?
問題來了,當發現i中全部為零時,系統無法判斷該值是沒有賦值,還是為0值。
C#2.0中的可空類型Nullable<T>
在數據庫中,任何數據可以為空。但是在C#1.x卻不能,因此引入了Nullable<T>可空類型,T 必須是值類型
既然可空類型可以=null,那麼可空類型是值類型還是引用類型呢?
答:可空類型依然是值類型。但是對一個可空類型賦值為null和引用類型賦值為null的內部操作是不一樣的。
可空類型的內部結構中,有一個bool類型的變量。hasValue.當hasValue=false時,表示該對象為空。因此對於int?? i=null;所做的操作,其實是i.hasValue=false。而對string s=null所做的操作其實是*s=0;