空值
引用型別的變數可以包含對例項的有效引用或空引用。空引用是引用型別變數的預設值,以及可空值型別。
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 + "!");
}
}