空值

引用型別的變數可以包含對例項的有效引用或空引用。空引用是引用型別變數的預設值,以及可空值型別。

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 + "!");
    }
}