是什么下面的编码方式之间的区别:为什么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