空值
引用类型的变量可以包含对实例的有效引用或空引用。空引用是引用类型变量的默认值,以及可空值类型。
null
是表示空引用的关键字。
作为表达式,它可用于将 null 引用分配给上述类型的变量:
object a = null;
string b = null;
int? c = null;
List<int> d = null;
不可为空的值类型不能分配空引用。以下所有分配均无效:
int a = null;
float b = null;
decimal c = null;
空引用应该不会有各种类型,如有效的实例相混淆:
- 一个空列表(
new List<int>()
) - 空字符串(
""
) - 数字零(
0
,0f
,0m
) - 空字符(
'\0'
)
有时,检查某些内容是 null 还是空/默认对象是有意义的。System.String.IsNullOrEmpty(String)
方法可用于检查此方法,或者你可以实现自己的等效方法。
private void GreetUser(string userName)
{
if (String.IsNullOrEmpty(userName))
{
//The method that called us either sent in an empty string, or they sent us a null reference. Either way, we need to report the problem.
throw new InvalidOperationException("userName may not be null or empty.");
}
else
{
//userName is acceptable.
Console.WriteLine("Hello, " + userName + "!");
}
}