是什麼下面的編碼方式之間的區別:爲什麼NULL字符串與「」字符串不同?
if (String::IsNullOrEmpty(TextBox1->Text))
和
if (TextBox1->Text == "")
?
是什麼下面的編碼方式之間的區別:爲什麼NULL字符串與「」字符串不同?
if (String::IsNullOrEmpty(TextBox1->Text))
和
if (TextBox1->Text == "")
?
第一個也檢查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
的字符串是一個對象。 s1
和s2
不是字符串,而是對字符串的引用(指針)。 null
是一個特殊的參考值,意思是「不指向對象」。空字符串是長度等於0的有效字符串對象。
'NULL'並不意味着空?'NULL'和空的區別是什麼到底是什麼? – Aan
Adban,一個字符串是一個對象,'s1'和's2'不是字符串,而是字符串的引用(指針),'null'是一個特殊的引用值,意思是'not pointing to a object'。一個有效的字符串對象,長度= 0 –
TextBox1->Text=""
是賦值。你的意思是寫TextBox1->Text==""
。
String::IsNullOrEmpty()
對null
或空字符串的測試結果爲真,如其名稱所示。碰巧,對於您的示例,TextBox1->Text
永遠不會評估爲null
。
Downvote大概是因爲關於'='和'=='的註釋嗎?問題已編輯! –
問題編輯似乎也是由第三方:( –
IsNullorEmpty
如果字符串爲null
,則返回true。除此之外,它們完全一樣。
第二個陳述是一個賦值,而不是一個相等運算符。
看起來像你困惑=
和==
(btw。在C++中最突出的錯誤來源)。
托馬斯
的主要區別是,字符串:: 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
第一個檢查: 例如,這兩種方法都將返回true
string x = null //x is null, unassigned
string x = "" //x is a string, but with nothing in it.
第二隻檢查是否
x == ""
第一條語句如果字符串爲空或者爲空,則返回true;僅當字符串爲空時返回第二個語句,第一個語句可以翻譯爲:
if(TextBox1->Text == null) || TextBox1->Text == "")
)編輯時不要更改問題的含義! –
第一行:「如果(IsNullOrEmpty(TextBox1->文本))」可以這樣寫:
if (TextBox1->Text== null || TextBox1->Text == "")
第二條語句是賦值(而不是比較)你正在做的「x =價值」; 但是,如果你做了一個錯字,這意味着你沒有對空測試(與第一個語句。
BTW,爲什麼用'C#'標籤? – sll
編輯標記問題完全改變了你的問題。它會只有公平然後才能說清楚。 –
這是C++ - CLI的問題..而不是C# – Nayan