IRONSOFTWAREHOME

理解C#空值合併運算符

Understanding C# Null Coalescing Operator (?? and ??=)

Gerald Versluis

12m 43s

在C#中,空合併運算子 (??) 允許開發人員簡化空值檢查邏輯,減少程式碼冗長性並提高可讀性。 該運算子提供了一種簡潔方法來為遇到的空值賦予回退值,而不是寫冗長的if-else條件。 在本文中,我們將透過Gerald Versluis的影片《Understanding C# Null Coalescing Operator (??》來詳細探討空合併運算子。 and ??=)》](https://www.youtube.com/watch?v=aIp0jUr6A24&list=PLfbOp004UaYWWOZFZ585BCeRvTduLt9Fm&index=11)。我們將分解影片中的關鍵部分,分析Gerald如何展示這個實用的C#特性。

簡介

在影片的開頭,Gerald介紹了空合併運算子這一C#中的強大特性,它顯著減少了空值檢查所需的程式碼行數。 他強調,這一運算子簡化了條件檢查,使程式碼更具可讀性。 為了說明其優點,Gerald展示了一個範例應用程式,在那裏他實作並解釋了空合併運算子的各種使用案例。

範例應用程式大綱

Gerald從設置一個簡單的控制台應用程式開始。 他提到,在之前的影片中,他使用try.dot.net網站進行演示,但由於版本限制(僅支持C# 7),他轉而使用Visual Studio for Mac。 他保證這些範例在Visual Studio for Windows上也能正常運行。

為了準備演示,Gerald建立了一個基本的Name屬性:

public class Person 
{
    public string Name { get; set; }
}

然後,他初始化這個類的實例來展示空合併運算子在實際情況下的運作。

用空合併運算子 (??) 取代空檢查

Gerald現在演示了如何使用空合併運算子 (??) 簡化空值檢查邏輯。 他將Name屬性設為空,然後使用?? 提供回退值:

var name = person.Name ?? "Gerald";

Gerald解釋說,在此運算子出現之前,開發人員會使用if語句:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

通過使用??,這一邏輯減少為一行。當person.Name為空時,'Gerald'被賦予其值; 否則,person.Name則保留原值。 他運行程式並確認輸出正確。

空合併拋出異常

接下來,Gerald探討了另一個使用案例:使用空合併運算子拋出異常。 他演示了如何在遇到空值時拋出異常,而不是提供回退值:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald指出,這在使用方法參數或屬性時特別有用,因為不應允許空值。 他解釋說,這一特性是在C# 7或8中引入的,具體取決於專案設置。 執行帶有ArgumentNullException,有效地防止了意外的空引用。

空合併複合賦值 (??=)

Gerald繼續討論空合併複合賦值 (??=) 運算子,這種方法提供了更簡化的方式來賦予預設值。 取而代之的是書寫:

if (person.Name == null)
{
    person.Name = "Gerald";
}

他用以下方法簡化:

person.Name ??= "Gerald";

Gerald解釋說,??=僅在左操作數為空時賦予指定值。 如果person.Name已經有值,則不變。 這個運算子在初始化字段或確保變數不會為空時特別有用。

與空條件運算子的結合

在最後的部分,Gerald演示了如何將空合併運算子與空條件運算子 (?.) 結合使用。 空條件運算子允許安全存取屬性,而不會引起NullReferenceException。 他提供了一個範例:

var length = person?.Name?.Length ?? 0;

Gerald解釋說,這確保了當Name為空時,結果預設為0,而不是拋出異常。 這組合在處理可空引用型別或複雜的物件層次結構時非常有用。

結論

整段影片中,Gerald Versluis有效地解釋了空合併運算子(??)和空合併複合賦值(??=)的威力。 他展示了這些運算子如何取代傳統的空檢查,使程式碼更簡潔且易讀。 通過利用這些特性,開發人員可以編寫出更乾淨且更高效的C#應用程式。

如果您有興趣看到這些概念的實際應用,請觀看Gerald Versluis的完整影片《Understanding C# Null Coalescing Operator (??》 and ??=)》。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立