跳至頁尾內容
開發者更新

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

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

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

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

  1. 建立一個新的C#專案。
  2. 確保安裝了適當的版本。
  3. 使用空合併運算子 ??
  4. 根據需求檢查值或物件引用型別。
  5. 運行程式碼。

Null Coalescing in 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的C#程式庫用於建立和處理PDF文件。 該程式庫提供了與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提供永久授權、升級選項、一年的軟體維護和三十天的退款保證,這些都包含在$999 Lite套件中。 使用者有三十天的時間在帶水印的試用期內在實際應用環境中評估產品。 點擊提供的IronPDF授權了解IronPDF的價格、授權及試用版本的更多資訊。 了解Iron Software產品的更多資訊,請查看Iron Software網站

常見問題

空合併運算子如何增強C#中程式碼的可讀性?

C#中的空合併運算子`??`通過簡化空檢查並提供窄約方式來為可空型別賦予預設值,從而提高程式碼的可讀性。

C#中空合併賦值運算子的目的何在?

空合併賦值運算子`??=`僅當左操作數為空時將右操作數的值賦給左操作數,允許在處理可空型別時精簡程式碼。

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

在使用IronPDF的C# PDF應用中,您可能會使用空合併運算子以便使用者未指定檔案名時賦予預設檔案名:string pdfName = userInputFileName ?? "default.pdf";

使用空合併運算子時有哪些常見的陷阱?

常見的陷阱是未確保操作數之間的型別相容性,這可能導致型別轉換錯誤。使用空合併運算子時,確保雙方操作數型別相容是至關重要的。

空合併運算子與C#中的型別相容性有何關係?

空合併運算子要求兩個操作數具有相容的型別。如果不是,C#會應用型別提升規則來確定結果型別,這可能導致意外的行為,如未小心處理。

為何空合併運算子對於處理可空型別的開發者有益?

空合併運算子有益之處在於它允許開發者高效地處理可空型別,通過提供預設值來降低冗長的條件邏輯需求。

開發者如何應用空合併運算子來管理C#程式庫中的空值?

開發者可以在C#程式庫中使用空合併運算子以便某給定值可能為空時賦予預設值,從而確保應用程式順利運行而不會出現空引用異常。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話