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