在 C# 中,string str = null; 和 string str = " "; 表示兩種不同的狀態:
-
string str = null;
- 這表示 str 是一個 null 參考,也就是說,它目前不指向任何對象。在這種情況下,str 變數本身沒有分配任何記憶體空間來儲存數據。試圖訪問 null 參考的成員(例如,呼叫方法)將導致拋出 NullReferenceException。
-
string str = " ";
- 這表示 str 指向一個空白字符的字串。這是一個有效的字串對象,其內容為一個空格字符。這個字串對象佔用記憶體空間,並且可以安全地訪問它的任何成員,如 Length 屬性,該屬性在這個例子中將返回 1,因為字串中只有一個空格字符。
總結來說,主要區別在於:
- null 表示變數沒有引用任何對象,你不能對其進行任何操作,否則會引起錯誤。
- " "(空白字串)是指向一個實際字串對象的參考,即使它的內容看起來是“空的”(因為只包含空格),它仍然是一個有效的對象,允許進行正常的字串操作。