場景1:使用?定義可空類型 眾所周知,C#中的值類型是不可以為null的,如果必須為null,則需要將變數定義為可空類型,如下所示: 場景2:使用?檢查null值 一般我們寫代碼時,為了避免代碼出現空異常System.NullReferenceException,都會寫很多的判斷語句 在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();
其實可以通過??來設置預設值,如果變數值為null,取??右邊的值,如果不為null,取變數的值
int? age = null; Console.WriteLine(age ?? 18); // 輸出18 age = 20; Console.WriteLine(age ?? 18); // 輸出20 Console.ReadLine();