【C#】-對於Null值的處理方法

VisionCode發表於2024-08-14

摘要


在 C# 開發中,處理 null 值是一個常見的任務。null 表示一個變數沒有引用任何物件或值型別的預設值。不恰當的 null 值處理可能導致 NullReferenceException,這是常見的執行時錯誤之一。在這篇文章中,我們將探討 C# 中幾種處理 null 的技術,並透過示例來說明它們的使用。

正文


1. Null 檢查

最基本的處理 null 的方法是在使用變數之前進行顯式檢查。

static void Main(string[] args){    PrintName(null);}static void PrintName(string name){    if (name != null)    {        Console.WriteLine(name);    }    else    {        Console.WriteLine("Name is null!");    }}

2. 使用 ?.?? 運算子

C# 6.0 引入了空條件運算子 ?.,它允許你在訪問成員之前檢查物件是否為 null。本人最喜歡用的還是??

public void PrintLength(string str){    int? length = str?.Length;    Console.WriteLine(length ?? 0);}

此外,?? 運算子允許你為可能為 null 的表示式提供一個預設值。

3. Null 合併運算子 ??=

C# 8.0 引入了 null 合併賦值運算子 ??=,它用於只在左側運算元評估為 null 時才給它賦值。

public void EnsureInitialized(ref string? text){    text ??= "Default Value";}

4. C# 8.0 中的 Nullable Reference Types

C# 8.0 引入了可空引用型別,這允許開發者明確指出哪些變數可以為 null,從而提供更好的編譯時檢查。

#nullable enableinternal class Program{    static void Main(string[] args)    {        PrintName("A");    }

static void PrintName(string? name) { if (name is not null) { Console.WriteLine(name); } }}

5. 使用預設值

在某些情況下,為可能為 null 的變數提供一個預設值是有意義的。

static void Main(string[] args){    Console.WriteLine(GetGreeting(null));}
static string GetGreeting(string? name){ // 如果name是空,返回Guest return $"Hello, {name ?? "Guest"}!";}

6.使用 Null-coalescing 表示式和 switch 表示式

利用 null-coalescingswitch 進行更復雜的 null 檢查。

string str = null;
string result = str switch{ null => "Default value", _ => str};
Console.WriteLine(result); // 輸出: Default value

以上示例展示了在C#中處理 null 的多種方法。透過合理運用這些方法,可以提高程式碼的健壯性,並減少異常發生的可能性。希望這些內容對你在處理 null 問題時有所幫助。

相關文章