空值

引用类型的变量可以包含对实例的有效引用或空引用。空引用是引用类型变量的默认值,以及可空值类型。

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>()
  • 空字符串(""
  • 数字零(00f0m
  • 空字符('\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 + "!");
    }
}