跳過到頁腳內容
.NET幫助

C# 空合併(開發者的工作原理)

null-coalescing 運算符 ?? 會評估右側操作項,如果左側操作項為 null 參照,則返回其結果; 否則會返回其左側操作項的值。 如果左側操作數評估的是非空值類型,則 null-coalescing 運算符 (??) 不會評估其右側操作數。 赋值运算符 ??= 是一个 null-coalescing 赋值,只有当左操作数评估为可空类型值时,才将其右操作数的值赋值给左操作数。 如果左側的操作數評估為非空值,則 null-coalescing 赋值運算符 (??=) 不會評估其右側操作數。 null-coalescing 運算符號與三元運算符號類似。

在 C# 中,null-coalescing 運算符 (??) 是二進位運算符。 作用於兩個操作數的運算符號稱為二進制運算符號。 使用 null-coalescing 運算符時,需要兩個操作數,運算符會評估每個操作數以決定結果。 現在,我們將看到 null-coalescing 和 null-conditional 運算符在 C# 中的用法如下。

如何使用 C# 空凝聚值類型

1.建立一個新的 C# 專案。 2.確保已安裝適當的版本。 3.使用 null-coalescing 運算符 ??。 4.根據需求檢查值或物件參考類型。 5.執行程式碼。

C# 中的空凝聚;

C# 中的空值是由 null-coalescing 運算符 (??) 提供的預設值處理,也就是在處理可能導致 null 的 nullable 類型或表達式時,用來管理此類值的 coalescing 想法。

文法

以下是 null-coalescing 運算符的語法:

result = expression1 ?? expression2;
result = expression1 ?? expression2;
result = If(expression1, expression2)
$vbLabelText   $csharpLabel
  • expression1:此表達式可能會產生一個空值。
  • 表達式 2:如果表達式 1 為空,這是要使用的預設值或替代表達式。
  • result:持有凝聚作業結果的變數。

在處理 nullable 類型時,null-coalescing 運算符提供了一種簡化的方法來指定預設值,這也是其簡化程式碼和有效處理 null 資料的主要目標。

優點

  • Conciseness: 處理 null 檢查,不需要複雜的條件語句或三元運算符號。
  • 程式碼可讀性:透過明確說明如果回傳 null 則會提供預設值來改善。

在使用 null-coalescing 運算符之前,確保比較的表達式類型相符或相容是至關重要的。

運算符號雖然有用,但過度使用可能會使代碼更難理解。 當可增強程式碼的清晰度時,請少用。

在處理可為空的類型或需要預設值的情況時,C# 中的 null-coalescing 運算符 (??) 是管理 null 值的有效工具,可能有助於編寫更簡潔、更易懂的程式碼。

null-coalescing 運算符 ? 具備下列與類型相關的特質:

結果類型推論

如果表達式 1 和 2 擁有相同的類型,則 null-coalescing 運算符的結果類型與這些操作數相同,如以下程式碼所示。

int? Value = null;
int result = Value ?? 10;
int? Value = null;
int result = Value ?? 10;
Dim Value? As Integer = Nothing
Dim result As Integer = If(Value, 10)
$vbLabelText   $csharpLabel

類型相容性

如果表達式 1 和 2 具有不同的類型,但其中一個可以隱式轉換為另一個,則結果類型是兩個表達式都可以隱式轉換為的類型。

double? value = null;
int result = (int)(value ?? 5.5);
double? value = null;
int result = (int)(value ?? 5.5);
Imports System

Dim value? As Double = Nothing
Dim result As Integer = CInt(Math.Truncate(If(value, 5.5)))
$vbLabelText   $csharpLabel

類型推廣

如果表達式 1 和 2 的類型無法進行隱式轉換,則會按照 C# 的類型提升規則選擇結果類型。

int? value = null;
long result = value ?? 100L;
int? value = null;
long result = value ?? 100L;
Dim value? As Integer = Nothing
Dim result As Long = If(value, 100L)
$vbLabelText   $csharpLabel

因此,所涉及的操作數的類型和 C# 類型轉換規則決定了存放 null-coalescing 運算符運算結果的變數或表達式的類型 (??)。 為了保證在使用 null-coalescing 運算符時能正確處理類型和值,必須考慮相容性和可能的類型轉換。

在 IronPDF 中凝聚。

安裝 IronPDF

若要安裝 IronPDF 函式庫,請在套件管理員 (Package Manager) 中輸入下列程式碼:

Install-Package IronPdf

C# Null Coalescing (How It Works For Developers):圖 1 - 安裝 IronPdf

或者,您也可以使用 NuGet Package Manager 來搜尋套件"IronPDF"。 您可以從與 IronPDF 相關的所有 NuGet 套件清單中選擇並下載所需的套件。

C# Null Coalescing (How It Works For Developers):圖 2 - NuGet 套件管理員

使用 Null Coalescing 創建 PDF

一個名為 IronPDF 的 C# 函式庫可用來建立 PDF 文件並與之搭配使用。 資料庫提供處理 PDF 的功能,例如格式化、文字處理和影像管理。 "Null-coalescing" 並非 IronPDF 獨有的方法或功能; 而是一種語言功能,而非特定於函式庫的操作。

但是,如果您在 C# 程式碼中使用 IronPDF 或任何其他函式庫,您可以利用 C# 語言所提供的 null-coalescing 運算符 (??) 。

為了處理 null 情況或提供預設值,例如在處理 IronPDF 物件、可 null 值類型或可能回傳 null 的屬性時,您可以使用 null-coalescing 運算符。

以下範例說明 IronPDF 如何使用 null-coalescing 運算符:

using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
Imports IronPdf
Imports IronPdf.Pages

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim x? As Integer = Nothing

			' Use the null-coalescing operator to provide a default value if x is null
			Dim outputstr = $"square of <b>{x}</b> is <b>{Math.Sqrt(If(x, 30))}</b>"

			' Render the HTML string as a PDF using IronPDF
			Dim pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr)

			' Save the generated PDF to the file system
			pdfcreate.SaveAs("demo.pdf")

			' Wait for a key press to prevent the console from closing immediately
			Console.ReadKey()
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

請記住 IronPDF(或任何函式庫)並未提供管理空值條件運算符的特殊功能或方法; .NET、Java、Python 或 Node js 的軟體開發人員,他們的專案涉及 .NET、Java、Python 或 Node js。 若要瞭解 IronPDF 的特色與功能,請造訪 IronPDF示範

輸出:

C# Null Coalescing (How It Works For Developers):圖 3 - 前導範例輸出

結論

總而言之,C# 的 null-coalescing 運算符 (??) 是一項有用的功能,可讓在表達式和指定中處理 null 值變得更容易、更有效率。 此運算符可簡化程式碼,為開發人員提供明確的方式來處理值可能為 null 的情況。 這可讓開發人員輕鬆指定預設值或執行替代邏輯。 它的適應性讓程式碼更精簡、更有效率,簡化了空測試,提高了可讀性。

IronPDF 提供永久授權、升級選項、一年的軟體維護,以及三十天的退款保證,這些都包含在 $799 Lite 套件中。 使用者可在有水印的試用期間內,在實際應用環境中進行三十天的產品評估。 點擊提供的 IronPDF授權,瞭解更多關於 IronPDF 的成本、授權和試用版的資訊。 若要瞭解 Iron Software 產品的更多資訊,請參閱 Iron Software 網站

常見問題解答

在 C# 中,null-coalescing 運算符如何增強程式碼的可讀性?

C# 中的 null-coalescing 運算符 `??`可簡化 null 檢查,並在遇到 nullable 類型時提供簡潔的方式來指定預設值,從而改善程式碼的可讀性。

C# 中的 null-coalescing 赋值運算符有何作用?

null-coalescing 赋值操作符 `??=`僅在左操作符為 null 時,才會將其右操作符的值分配給左操作符,以便在處理 nullable 類型時簡化程式碼。

您能提供一個在 C# PDF 應用程式中使用 null-coalescing 運算符的範例嗎?

在使用 IronPDF 的 C# PDF 應用程式中,如果使用者沒有指定檔案名稱,您可能會使用 null-coalescing 運算符指定預設檔案名稱:string pdfName = userInputFileName ?"default.pdf";.

使用 null-coalescing 運算符時有哪些常見的錯誤?

常見的陷阱是無法確保操作項之間的類型相容性,這可能會導致類型轉換錯誤。在使用 null-coalescing 運算符時,確保兩個操作數都是相容類型是非常重要的。

null-coalescing 運算符與 C# 中的類型相容性有何關聯?

null-coalescing 運算符要求兩個操作數都是相容的類型。如果不是,C# 會套用類型升級規則來決定結果類型,如果不小心管理,可能會導致意想不到的行為。

為什麼 null-coalescing 運算子對處理 nullable 類型的開發人員有益?

null-coalescing 運算符的好處在於它可以讓開發人員透過提供預設值來有效率地處理 nullable 類型,減少對冗長條件邏輯的需求。

開發人員如何使用 null-coalescing 運算符管理 C# 程式碼庫中的 null 值?

開發人員可以使用 C# 程式碼庫中的 null-coalescing 運算符,在指定值可能為 null 時指定預設值,以確保應用程式繼續順利執行,而不會發生 null reference 異常。

Jacob Mellor, Team Iron 首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。