C# 中字符串 string.Empty
、"" 和 null
三者的区别
1. string.Empty
string.Empty
是一个表示空字符串的静态字段。- 它实际上等同于 ""(空字符串),但使用
string.Empty
可以更加清晰地表示我们需要一个空字符串。
2. ""(空字符串)
- 双引号中没有任何字符的字符串被称为空字符串。
- 它是一个有效的字符串对象,但不包含任何字符。
3. null
null
表示一个引用类型的空引用。- 对于字符串对象,
null
表示变量没有引用任何字符串对象。 - 它不是一个有效的字符串对象,也没有任何长度或内容。
代码示例:
// 使用 string.Empty
string str1 = string.Empty;
Console.WriteLine(str1.Length); // 输出:0
// 使用 ""
string str2 = "";
Console.WriteLine(str2.Length); // 输出:0
// 使用 null
string str3 = null;
Console.WriteLine(str3?.Length); // 输出:(null)
// 比较 string.Empty 和 ""
Console.WriteLine(string.Empty == ""); // 输出:True
// 比较 string.Empty 和 null
Console.WriteLine(string.Empty == null); // 输出:False
// 比较 "" 和 null
Console.WriteLine("" == null); // 输出:False
// 使用 null 会导致空引用异常
try
{
Console.WriteLine(str3.ToUpper()); // 抛出空引用异常
}
catch (NullReferenceException ex)
{
Console.WriteLine(ex.Message); // 输出:对象引用未设置到对象的实例
}
总结:
-
string.Empty
和 "" 都表示空字符串,它们在功能上是相同的,可以用于表示一个空的、没有字符的字符串。 -
null
表示一个没有引用任何字符串对象的空引用,在使用时需要小心处理,以避免空引用异常。
建议:
- 在需要明确表示空字符串时,使用
string.Empty
或 ""。 - 在需要检查字符串是否为空时,使用
string.IsNullOrEmpty()
方法。
string name = "";
Console.WriteLine(name==""); // => True
Console.WriteLine(name==string.Empty); // => True
Console.WriteLine(name==String.Empty); // => True
Console.WriteLine(string.IsNullOrEmpty(name)); // => True
Console.WriteLine(String.IsNullOrEmpty(name)); // => True
- 避免使用
null
来表示空字符串,因为它可能导致空引用异常。