C#對(duì)NULL的簡化賦值的方法總結(jié)
1. NULL合并操作符(??)
null合并操作符(??)是一個(gè)簡寫操作符,用于在左側(cè)對(duì)象不為null時(shí)返回左側(cè)值,在左側(cè)對(duì)象為null時(shí)返回右側(cè)值。當(dāng)您在判斷當(dāng)前對(duì)象值是否null值并且賦值新對(duì)象需要簡寫時(shí),此操作符非常有用。
string name = null; string result = name ?? "Unknown"; Console.WriteLine(result); // Output: Unknown
在上面的示例中,由于name的值為null,因此使用null合并運(yùn)算符將“Unknown”的值賦給result。
2. 條件運(yùn)算符 (?:)
條件運(yùn)算符(?:)是一個(gè)三元運(yùn)算符,用于代替if-else的簡寫,如果條件為真則返回一個(gè)值,如果條件為假則返回另一個(gè)值。當(dāng)需要根據(jù)條件提供默認(rèn)值時(shí),此操作符很有用。
string name = null; string result = (name != null) ? name : "Unknown"; Console.WriteLine(result); // Output: Unknown
上面的例子中,由于name的值為null,因此使用條件運(yùn)算符將“Unknown”的值賦給result。
3. 空條件運(yùn)算符(?.)
如果對(duì)象不為空,則使用空條件操作符(?.)訪問對(duì)象的成員,否則返回空。當(dāng)您需要訪問可能為空的對(duì)象的屬性或方法時(shí),此操作符非常有用。
string name = null; int? length = name?.Length; Console.WriteLine(length); // Output: null
在上面的例子中,因?yàn)閚ame的值是空的,所以length的值也是空的。
但你也可以利用 合并操作運(yùn)算符(??) 進(jìn)行進(jìn)階的寫法,代碼如下:
string name = null; int length = name?.Length??0; Console.WriteLine(length); // Output: 0
可以看到上面的代碼例子里,length可以不用空的值類型獲取name的長度,可以在你的業(yè)務(wù)邏輯里認(rèn)為null的字符串長度也可以是0長度,減少后期值類型的復(fù)雜判斷。
4. 空合并賦值操作符 (??=)
空合并賦值操作符(??=)用于在左側(cè)對(duì)象為空時(shí)將右側(cè)對(duì)象賦值給左側(cè)。意思就是如果變量對(duì)象為空,可以給它賦值一個(gè)默認(rèn)對(duì)象值,在理解上它可以簡化代碼并使其更加簡潔。
string name = null; name ??= "Unknown"; Console.WriteLine(name); // Output: Unknown
在上面的示例中,由于name的值為空,因此使用空合并賦值操作符將“Unknown”的值賦給name。
5. 寬容運(yùn)算符 (!.)
允許為空的操作符(!.)用于告訴編譯器值不為空,即使編譯器無法確定該值不為空。當(dāng)您知道一個(gè)值不會(huì)為空,但編譯器無法確定它不會(huì)為空時(shí),此操作符很有用。
string name = null!; int length = name.Length; Console.WriteLine(length); // Output: System.NullReferenceException
在上面的例子中,寬容操作符用于告訴編譯器name的值不可為空。但是,由于name的值實(shí)際上是空的,所以系統(tǒng)在運(yùn)行時(shí)拋出NullReferenceException。
6. 使用 is 運(yùn)算符
在C#編程語言中,“is”操作符是一個(gè)關(guān)鍵字,用于檢查變量是否與特定類型兼容。隨著C#7.0中常量模式的引入,這個(gè)運(yùn)算符獲得了額外的功能。具體來說,現(xiàn)在可以使用“is”操作符將值與常量(如null)進(jìn)行比較。
if (name is null)
{
// code to execute
}
Console.WriteLine(name);使用“is”運(yùn)算符的擴(kuò)展功能使開發(fā)人員能夠在c#應(yīng)用程序中執(zhí)行類型檢查和比較時(shí)編寫更簡潔、更可讀的代碼。
或者,您也可以使用操作符檢查:==null
object obj = null;
if (obj == null)
{
// do something if obj is null
}
else
{
// do something else if obj is not null
}這兩種方法都可以,但是使用操作符進(jìn)行檢查可能更具可讀性和表現(xiàn)力,特別是當(dāng)與其他類型檢查 is null 結(jié)合使用時(shí)。
7. ArgumentNullException 參數(shù)空異常
最后,ArgumentNullException類用于處理傳遞給方法或構(gòu)造函數(shù)的空參數(shù)。當(dāng)您需要確保傳遞給方法或構(gòu)造函數(shù)的參數(shù)不為空時(shí),該類非常有用。
public void DoSomething(string name)
{
if (name == null)
{
throw new ArgumentNullException(nameof(name));
}
Console.WriteLine($"Hello, {name}!");
}
// Usage
DoSomething(null); // Output: System.ArgumentNullException: Value cannot be null. (Parameter 'name')在上面的例子中,ArgumentNullException類用于在name的值為空時(shí)拋出異常。
到此這篇關(guān)于C#對(duì)NULL的簡化賦值的方法總結(jié)的文章就介紹到這了,更多相關(guān)C#對(duì)NULL賦值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)關(guān)閉子窗口而不釋放子窗口對(duì)象的方法
下面小編就為大家?guī)硪黄狢#實(shí)現(xiàn)關(guān)閉子窗口而不釋放子窗口對(duì)象的方法 。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
C# 撒列實(shí)現(xiàn)關(guān)鍵字過濾的實(shí)例
C# 撒列實(shí)現(xiàn)關(guān)鍵字過濾的實(shí)例,需要的朋友可以參考一下2013-04-04
C# 控制臺(tái)實(shí)現(xiàn)一次性輸入多行的操作
這篇文章主要介紹了C# 控制臺(tái)實(shí)現(xiàn)一次性輸入多行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
C#程序最小化到托盤圖標(biāo)操作步驟與實(shí)現(xiàn)代碼
設(shè)置窗體屬性showinTask=false;加notifyicon控件notifyIcon1,為控件notifyIcon1的屬性Icon添加一個(gè)icon圖標(biāo);添加窗體最小化事件(首先需要添加事件引用)接下來介紹實(shí)現(xiàn)代碼,感興趣的朋友可以研究下2012-12-12
Unity Blend Tree動(dòng)畫混合樹使用入門教程
這篇文章主要為大家詳細(xì)介紹了Unity Blend Tree動(dòng)畫混合樹使用入門教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

