为什么NULL字符串不同于""字符串?

Aan*_*Aan 0 .net string c++-cli

以下编码方式有什么区别:

if (String::IsNullOrEmpty(TextBox1->Text)) 
Run Code Online (Sandbox Code Playgroud)

if (TextBox1->Text == "") 
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 9

第一个也检查null.

TextBox-> Text属性永远不会为null但考虑(C#):

string s1 = null;
string s2 = "";

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

s1 == ""    // false
s2 == ""    // true
Run Code Online (Sandbox Code Playgroud)

IsNullOrEmpty()函数只是一个方便的助手,可以立即检查2(错误)条件.

所以你的标题略有偏差,这是空的和空的.因为:

string.Empty == ""     // true
Run Code Online (Sandbox Code Playgroud)

字符串是一个对象.s1并且s2不是字符串而是字符串的引用(指针).null是一个特殊的参考值,意思是"不指向一个对象".空字符串是长度为0的有效字符串对象

  • Adban,一个字符串是一个对象.`s1`和`s2`不是字符串,而是字符串的引用(指针).`null`是一个特殊的引用值,意思是"不指向一个对象".空字符串是长度为0的有效字符串对象 (3认同)