字符串分配-Clarification

use*_*546 0 c# string variable-assignment

当我宣布

string x = new string(new char[0]);
Run Code Online (Sandbox Code Playgroud)

它运作正常.我的问题是x将分配什么值?

当我检查

Console.WriteLine(x.CompareTo(null)==0);,it returns false.
Run Code Online (Sandbox Code Playgroud)

dec*_*jau 7

当您指定新的char [0]时,您的字符串不为空.它是空的.

你可以这样做:

Console.WriteLine(string.IsNullOrEmpty(x));
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 5

x将是一个空字符串,相同x = "".

null并且""是两个不同的字符串值.特别是,null是一个空引用,因此您无法在其上调用任何实例成员.因此,如果x为null,x.Length则抛出一个NullReferenceException.

相反,""(或String.Empty)是一个恰好包含0个字符的普通字符串.它的实例成员工作正常,"".Length等于0.

要检查字符串是否为null空,请调用(惊讶)String.IsNullOrEmpty.