跳過到頁腳內容
.NET幫助

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

空合併運算子 ?? 評估右操作數,並在左操作數為空引用時返回其結果; 否則,返回其左操作數的值。 如果左操作數評估為非可空值類型,空合併運算子(??)則不會評估其右邊的操作數。 賦值運算子 ??= 是一種空合併賦值運算,僅當左操作數評估為可空類型值時,才會將右側操作數的值賦給左側操作數。 如果左側的操作數評估為非空值,空合併賦值運算子(??=)不會評估其右側操作數。 空合併運算子類似於三元運算子。

在 C# 中,空合併運算子(??)是二元運算子。 作用於兩個操作數的運算子稱為二元運算子。 使用空合併運算子時,需要兩個操作數,運算子會評估每個操作數以確定結果。 現在,我們將在下面看到 C# 中空合併和空條件運算子的使用。

如何使用 C# 空合併值類型

  1. 創建一個新的 C# 項目。
  2. 確保安裝了適當的版本。
  3. 使用空合併運算子 ??
  4. 根據需求檢查值或對象引用類型。
  5. 運行代碼。

C# 中的空合併

C# 中的空值被默認處理,由 空合併運算子 (??) 提供,這是聯合管理空值的想法,適用於處理可能導致空的可空類型或表達式。

語法

以下是空合併運算子的語法:

result = expression1 ?? expression2;
result = expression1 ?? expression2;
result = If(expression1, expression2)
$vbLabelText   $csharpLabel
  • expression1:此表達式可能產生空值。
  • expression2:如果 expression1 為空,這是預設值或替代表達式。
  • result:保存合併操作結果的變量。

空合併運算子提供了一種簡明的方法來在處理可空類型時分配預設值,其主要目的是精簡代碼並有效處理空數據。

優點

  • 簡潔性:在不需要複雜的條件語句或三元運算子的情況下處理空檢查。
  • 代碼可讀性:通過明確說明如果返回空則會提供一個預設值來提高可讀性。

在使用空合併運算子之前,務必確保比較的表達式類型匹配或是相容的。

儘管有用,過度使用該運算子可能使代碼更難理解。 適度使用在增強代碼清晰度時。

在處理可空類型或需要預設值的情境中,C# 的空合併運算子(??)是一種有效的工具,用於管理空值,並且有助於撰寫更簡潔、可讀性強的代碼。

空合併運算子 ?? 具有以下類型相關屬性:

結果類型推斷

如果表達式 1 和 2 擁有相同的類型,則空合併運算子的結果類型就是這些操作數的類型,如以下代碼所示。

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# 類型轉換規則決定了持有空合併運算子(??)結果的變量或表達式類型。 為了保證在使用空合併運算子時正確處理類型和值,考慮兼容性和可能的類型轉換是至關重要的。

在 IronPDF 中的合併

首先,確保你的項目安裝了 IronPDF 庫。

要安裝 IronPDF 庫,請在包管理器中輸入以下代碼:

Install-Package IronPdf

C# 空合併(如何對開發者運作):圖 1 - 安裝 IronPDF

另一種方法是使用 NuGet 包管理器搜索 "IronPDF" 套件。 您可以從與 IronPDF 相關的所有 NuGet 套件列表中選擇並下載所需的套件。

C# 空合併(如何對開發者運作):圖 2 - NuGet 包管理器

使用空合併創建 PDF

IronPDF 是一個用於創建和處理 PDF 文檔的 C# 庫。 該庫提供了處理 PDF,如格式化、文本處理和圖片管理的功能。 "空合併" 不是 IronPDF 特有的方法或功能; 而是一種語言功能,而不是庫特定的操作。

但是,如果您在 C# 代碼中使用 IronPDF 或其他任何庫,您可以利用 C# 語言提供的空合併運算子(??)。

例如,在處理 IronPDF 對象、可空值類型或可能返回空的屬性時,您可以使用空合併運算子來處理空條件或提供預設值。

以下示例顯示了如何將空合併運算子與 IronPDF 一起使用:

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(或任何庫)不提供管理空值條件運算子的特殊功能或方法; 而是建立在 C# 語言的一般功能和概念上來處理空條件運算子。 要了解更多關於 IronPDF 的功能和能力,請訪問 IronPDF 示範

輸出:

C# 空合併(如何對開發者運作):圖 3 - 前述示例輸出

結論

總之,C# 的空合併運算子(??)是一個有用的功能,使處理表達式和賦值中的空值更容易和更高效。 這個運算子通過給開發者一種明確的方式處理可能為空的值情況來簡化代碼。 這使得開發者可以輕鬆地指定預設值或執行替代邏輯。 它的適應性使代碼更為簡化和高效,簡化了空檢測並增強了可讀性。

IronPDF 在 $799 Lite 套餐中提供永久許可證、升級選項、一年的軟體維護和三十天退款保證。 用戶在有水印的試用期間有三十天時間來在實際應用環境中評估產品。 點擊提供的 IronPDF 授權 以了解 IronPDF 的價格、授權和試用版的更多信息。 要了解有關 Iron Software 產品的更多信息,請訪問 Iron Software 網站

常見問題解答

空合併運算符如何提高 C# 代碼的可讀性?

C# 中的空合併運算符 `??` 通過簡化空檢查以及提供當遇到可空類型時分配默認值的簡潔方式來提高代碼的可讀性。

C# 中空合併賦值運算符的用途是什麼?

空合併賦值運算符 `??=` 僅當左操作數為空時將其右操作數的值分配給左操作數,從而在處理可空類型時簡化代碼。

你能否提供一個在 C# PDF 應用中使用空合併運算符的例子?

在使用 IronPDF 的 C# PDF 應用中,你可以使用空合併運算符來分配默認文件名,如果用戶未指定文件名:string pdfName = userInputFileName ?? "default.pdf";

使用空合併運算符時的一些常見陷阱是什麼?

一個常見的陷阱就是未確保操作數的類型兼容性,這可能導致類型轉換錯誤。使用空合併運算符時,必須確保兩個操作數的類型兼容。

空合併運算符如何與 C# 中的類型兼容性相關?

空合併運算符要求兩個操作數的類型兼容。如果不兼容,C# 將應用類型提升規則來確定結果類型,如果不小心管理,這可能導致意外行為。

為什麼空合併運算符對於處理可空類型的開發者來說是有益的?

空合併運算符是有益的,因為它允許開發者通過提供默認值來有效地處理可空類型,從而減少繁瑣的條件邏輯。

開發者如何使用空合併運算符來管理 C# 庫中的空值?

開發者可以使用 C# 庫中的空合併運算符,在可能為空時分配默認值,從而保證應用程序繼續順利運行而不出現空引用異常。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。