以下编码方式有什么区别:
if (String::IsNullOrEmpty(TextBox1->Text))
和
if (TextBox1->Text == "")
答案 0 :(得分:9)
第一个也检查null
。
TextBox-> Text属性永远不会为null,但请考虑(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
答案 1 :(得分:2)
主要区别在于String :: IsNullOrEmpty()还测试字符串变量为null。 例如,这两种方法都将返回true:
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
答案 2 :(得分:1)
TextBox1->Text=""
是作业。你打算写TextBox1->Text==""
。
String::IsNullOrEmpty()
对null
或空字符串测试为true,如其名称所示。碰巧的是,对于您的示例,TextBox1->Text
永远不会评估为null
。
答案 3 :(得分:1)
IsNullorEmpty
, null
将返回true。除此之外,它们完全一样。
答案 4 :(得分:1)
第二个语句是赋值,而不是相等运算符。
看起来你混淆了=
和==
(顺便说一下,C ++中唯一最突出的错误来源)。
托马斯
答案 5 :(得分:1)
第一个检查以下任何一个:
string x = null //x is null, unassigned
string x = "" //x is a string, but with nothing in it.
第二只检查是否
x == ""
答案 6 :(得分:1)
如果字符串为null,则第一个语句返回true;如果字符串为空,则返回第二个语句,因此,第一个语句可以转换为:
if(TextBox1->Text == null ) || TextBox1->Text == "")
答案 7 :(得分:1)
第一行“if(IsNullOrEmpty(TextBox1-> Text))”可以这样写:
if (TextBox1->Text== null || TextBox1->Text == "")
第二个陈述是一个分配(而不是比较)你正在做“x =值”; 但是如果你输错了,那就意味着你没有测试null(与第一个语句相比。