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 或 ""。
- 在需要检查字符串是否为空时,使用
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 来表示空字符串,因为它可能导致空引用异常。