[聊聊C#] 談談 null

null 寫程式 都會用到的,但何謂null 實在太模糊
就來談談null 

 首先是msdn的解釋

上述提到了參考型別 與 實值型別 
那就來看一下 string(參考型別) 與 int(實值型別)


由上圖可見
當string 沒給值,預設的值會是null
當int 沒有值,預設的值會是0

而且可以發現到
string(參考型別)  null 的記憶體位置 是0x00000000

所以如何分辨參考與實值可以這樣想
當初始變數時沒有給初始值 如果是null 就是參考型別
相反的自動有預設值的就是實值型別

所以簡單來說 參考型別 因為要參考 heap的記憶體位置,但是初始時又不給new,
就先放 記憶體位置0x00000000 給它一個名稱 null 

上圖可以看到 當把temp 設為null   記憶體位置0x00000000

這是還蠻重要的觀念,有時候看到初學者 寫了一個class 有用到List<string>
只有new class 就想直接add string 到List<string>,這樣會產生錯誤,因為List<string> 還是null

那就先聊到這裡,謝謝觀看