C 中null和 的區別

2021-07-24 16:44:48 字數 1480 閱讀 5835

string是引用型別;

string str = null 沒有建立記憶體空間,str中存放的是空引用指標;

string str = "" 建立了記憶體空間,str中存放的是指向堆中的指標。

簡單地說:

string str ="";

給你一張白紙;

string str = null;

連白紙也沒有。

string.empty就相當於"" 

一般用於字串的初始化

比如:string a; 

console.writeline(a);//這裡會報錯,因為沒有初始化a 

而下面不會報錯:

string a=string.empty; 

console.writeline(a); 

或者用於比較:

if(a=="") 

if(a==string.empty) 

上面兩句是一樣的效果。

string.empty不分配儲存空間

""分配乙個長度為空的儲存空間

所以一般用string.empty

為了以後跨平台,還是用string.empty

在 c# 中,大多數情況下 "" 和 string.empty 可以互換使用。比如:

string s = "";

string s2 = string.empty;

if (s == string.empty)  

if語句成立

判定為空字串的幾種寫法,按照效能從高到低的順序是:

s.length == 0 優於 s == string.empty 優於 s == "" 

您關於string.empty和null的問題是這樣的,這兩個都是表示空字串,其中有乙個重點是string str1= string.empty和 string str2=null 的區別,這樣定義後,str1是乙個空字串,空字串是乙個特殊的字串,只不過這個字串的值為空,在記憶體中是有準確的指向的,string str2=null,這樣定義後,只是定義了乙個string 類的引用,str2並沒有指向任何地方,在使用前如果不例項化的話,都將報錯。textbox1.text的值為零長度字串 ""。

問題來自於對控制項的text屬性理解錯誤。

一:null和空的區別

1.宣告的string型別的變數和屬性以及欄位在未賦值的情況下均為null,這個null不僅僅表示為無字元,更表示為空的引用。

比如:string username;此時判斷username是否為空應該是if(username==null)而不是if(username==「」),並且使用username.equals(null)或username.equals(「」)均為錯的,因為此時username是個空引用,根本無法呼叫equals()方法。但是如果宣告為string username=「」,則上述方法均成立。但是此時username並不是null而是空值。

2.所有控制項的text屬性的在未賦值的情況下是空值(""), 而不是null。

C 中null和「」的區別

string是引用型別 string str null 沒有建立記憶體空間,str中存放的是空引用指標 string str 建立了記憶體空間,str中存放的是指向堆中的指標。簡單地說 string str 給你一張白紙 string str null 連白紙也沒有。string.empty就相當於...

C 中DBNull和NULL區別

1 dbnull是乙個類。dbnull.value是它唯一的例項。它指資料庫中資料為空 時,在.net中的值。null表示乙個物件的指向無效,即該物件為空物件。對資料庫中的資料進行判斷時,用if sdrct 0 is dbnull 而不是用!代替is。null 是c 中的null,dbnull是資料...

C 中NULL和nullptr的區別

看起來null和nullptr都是代表空指標,但是null在過載函式的時候卻匹配到了引數為int的那個版本。這是因為在c 中,null的定義一般是這樣的 ifdef cplusplus define null 0 else define null void 0 endif cplusplus 可以看...