有一种方便的方法可以“抓住”两者
if (String.IsNullOrEmpty(Master.SharedInfo)) {
...
}
null
并且""
不相等。null
意味着根本没有字符串。""
是一个长度的字符串0
。
string s = null;
int i = s.Length; // <-- Throws null reference exception
但
string s = "";
int i = s.Length; // OK, i => 0
""
并且String.Empty
是等价的。有些人说您应该始终使用String.Empty
而不是""
,但这并没有什么区别。
更新
相等的字符串常量由编译器保留,即编译器只存储相等的常量一次。你可以做一个简单的测试(回应@BobTodd的评论),
string s = "";
Console.WriteLine(Object.ReferenceEquals(s, "")); // --> true
Console.WriteLine(Object.ReferenceEquals(s, String.Empty)); // --> true
为了完整起见(根据@JoelEtherton 的评论)。从 .NET Framework 4.0 开始,您可以测试
if (String.IsNullOrWhitespace(Master.SharedInfo)) {
...
}
这将捕获类似" "
or"\t"
的字符串。