null 寫程式 都會用到的,但何謂null 實在太模糊
就來談談null
首先是msdn的解釋

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

由上圖可見
當string 沒給值,預設的值會是null
當int 沒有值,預設的值會是0
而且可以發現到
string(參考型別) null 的記憶體位置 是0x00000000
所以如何分辨參考與實值可以這樣想
當初始變數時沒有給初始值 如果是null 就是參考型別
相反的自動有預設值的就是實值型別

所以簡單來說 參考型別 因為要參考 heap的記憶體位置,但是初始時又不給new,
就先放 記憶體位置0x00000000 給它一個名稱 null
就先放 記憶體位置0x00000000 給它一個名稱 null
上圖可以看到 當把temp 設為null 記憶體位置0x00000000
這是還蠻重要的觀念,有時候看到初學者 寫了一個class 有用到List<string>
只有new class 就想直接add string 到List<string>,這樣會產生錯誤,因為List<string> 還是null
只有new class 就想直接add string 到List<string>,這樣會產生錯誤,因為List<string> 還是null
那就先聊到這裡,謝謝觀看