2011-11-02 82 views
0

是什麼下面的編碼方式之間的區別:爲什麼NULL字符串與「」字符串不同?

if (String::IsNullOrEmpty(TextBox1->Text)) 

if (TextBox1->Text == "") 

+1

BTW,爲什麼用'C#'標籤? – sll

+0

編輯標記問題完全改變了你的問題。它會只有公平然後才能說清楚。 –

+0

這是C++ - CLI的問題..而不是C# – Nayan

回答

9

第一個也檢查null以及。

一個TextBox-> Text屬性永遠不會爲空,但考慮(C#):

string s1 = null; 
string s2 = ""; 

string.IsNullOrEmpty(s1) // true 
string.IsNullOrEmpty(s2) // true 

s1 == "" // false 
s2 == "" // true 

IsNullOrEmpty()功能僅僅是一個方便的輔助檢查2(錯誤)條件下一次。

因此,您的標題稍微偏離,這是關於空和空。這是因爲:

string.Empty == ""  // true 

的字符串是一個對象。 s1s2不是字符串,而是對字符串的引用(指針)。 null是一個特殊的參考值,意思是「不指向對象」。空字符串是長度等於0的有效字符串對象。

+0

'NULL'並不意味着空?'NULL'和空的區別是什麼到底是什麼? – Aan

+3

Adban,一個字符串是一個對象,'s1'和's2'不是字符串,而是字符串的引用(指針),'null'是一個特殊的引用值,意思是'not pointing to a object'。一個有效的字符串對象,長度= 0 –

1

TextBox1->Text=""是賦值。你的意思是寫TextBox1->Text==""

String::IsNullOrEmpty()null或空字符串的測試結果爲真,如其名稱所示。碰巧,對於您的示例,TextBox1->Text永遠不會評估爲null

+0

Downvote大概是因爲關於'='和'=='的註釋嗎?問題已編輯! –

+0

問題編輯似乎也是由第三方:( –

1

IsNullorEmpty如果字符串爲null,則返回true。除此之外,它們完全一樣。

1

第二個陳述是一個賦值,而不是一個相等運算符。

看起來像你困惑===(btw。在C++中最突出的錯誤來源)。

托馬斯

2

的主要區別是,字符串:: IsNullOrEmpty()也測試爲空字符串變量。對於任一

public bool TestString(string theString){ 
    return String::IsNullOrEmpty(theString); 
} 

string emptyString; //currently a null object 
TestString(emptyString); //returns true 
emptyString = ""; 
TestString(emptyString); //also returns true 
1

第一個檢查: 例如,這兩種方法都將返回true

string x = null //x is null, unassigned 
string x = "" //x is a string, but with nothing in it. 

第二隻檢查是否

x == "" 
1

第一條語句如果字符串爲空或者爲空,則返回true;僅當字符串爲空時返回第二個語句,第一個語句可以翻譯爲:

if(TextBox1->Text == null) || TextBox1->Text == "") 
+0

)編輯時不要更改問題的含義! –

1

第一行:「如果(IsNullOrEmpty(TextBox1->文本))」可以這樣寫:

if (TextBox1->Text== null || TextBox1->Text == "") 

第二條語句是賦值(而不是比較)你正在做的「x =價值」; 但是,如果你做了一個錯字,這意味着你沒有對空測試(與第一個語句。

相關問題