C# 有以下三個運算符來處理空值 –
空合并運算符 (??)
允許您獲取變量的值(如果不是) null,或者指定可以使用的默認值。
它替換 C# 中的以下表達式 –
string resultOne = value != null ? value : "default_value";
登錄后復制
使用以下表達式 –
string resultTwo = value ?? "default_value";
登錄后復制
這是一個說明這一點的示例。
示例
using System; class Program{ static void Main(){ string input = null; string choice = input ?? "default_choice"; Console.WriteLine(choice); // default_choice string finalChoice = choice ?? "not_chosen"; Console.WriteLine(finalChoice); // default_choice } }
登錄后復制
空合并賦值運算符 (??=)
如果左側的值不為空,則返回該值。否則,它返回右側的值。換句話說,如果變量的當前值為 null,它允許您將變量初始化為某個默認值。
它替換了 C# 中的以下表達式 –
if (result == null) result = "default_value";
登錄后復制
使用以下表達式。
result ??= "default_value";
登錄后復制
此運算符對于延遲計算的屬性很有用。例如 –
示例
class Tax{ private Report _lengthyReport; public Report LengthyReport => _lengthyReport ??= CalculateLengthyReport(); private Report CalculateLengthyReport(){ return new Report(); } }
登錄后復制
空條件運算符 (?.)
此運算符允許您安全地調用實例上的方法。如果實例為 null,則返回 null 而不是拋出 NullReferenceException。否則,它只是調用該方法。
它替換 C# 中的以下表達式 –
string result = instance == null ? null : instance.Method();
登錄后復制
使用以下表達式 –
string result = instance?.Method();
登錄后復制
考慮以下示例。
示例
using System; string input = null; string result = input?.ToString(); Console.WriteLine(result); // prints nothing (null)
登錄后復制
示例
?實時演示
using System; class Program{ static void Main(){ string input = null; string choice = input ?? "default_choice"; Console.WriteLine(choice); // default_choice string finalChoice = choice ?? "not_chosen"; Console.WriteLine(finalChoice); // default_choice string foo = null; string answer = foo?.ToString(); Console.WriteLine(answer); // prints nothing (null) } }
登錄后復制
輸出
default_choice default_choice
登錄后復制
以上就是C# 提供哪些運算符來處理空值?的詳細內容,更多請關注www.xfxf.net其它相關文章!