原文: C# ?和??使用講解
場景1:使用?定義可空類型
衆所周知,C#中的值類型是不可以為null的,如果必須為null,則需要将變量定義為可空類型,如下所示:
int? age = null;
場景2:使用?檢查null值
一般我們寫代碼時,為了避免代碼出現空異常System.NullReferenceException,都會寫很多的判斷語句
Address address = null;
if (address != null)
{
Console.WriteLine(address.PostCode);
}
Console.ReadLine();
在C#的新文法中,我們可以通過?來檢查null值,這樣可以減少很多不必要的判斷
Address address = null;
var postCode = address?.PostCode;
Console.WriteLine(postCode);
Console.ReadLine();
場景3:使用??設定預設值
在寫代碼過程中,經常會碰到當變量為null值設定預設值的情況,原來的寫法可能是這樣的:
int? age = null;
if (!age.HasValue)
{
age = 18;
}
Console.WriteLine(age); // 輸出18
Console.ReadLine();
在C#的新文法中,可以通過??來設定預設值,如果變量值為null,取??右邊的值,如果不為null,取變量的值
int? age = null;
Console.WriteLine(age ?? 18); // 輸出18
age = 20;
Console.WriteLine(age ?? 18); // 輸出20
Console.ReadLine();