跳過到頁腳內容
.NET幫助

C# Action(對於開發者的運行原理)

在本教程中,我們將教授 C# ActionFunc 委派和相關主題的概念。 本指南專為初學者設計,將指導您了解基礎知識、提供範例並解釋動作委派的關鍵術語。

讓我們先了解 C# 中的委派是什麼。 我們會在文章的後面部分探討IronPDF 庫

理解 C# 中的委派

委派是一種編程結構,作為方法的引用,由一組特定的參數和返回類型定義,封裝功能,如預定義委派類型,並允許方法返回值。

它允許以參數形式傳遞方法。 實質上,委派用作函數指針,指向它代表的方法。 在 C# 中,有兩種預定義委派類型廣泛使用:FuncAction

什麼是 Func 委派?

Func委派表示可以有返回值的方法。 最後一個類型參數指定返回類型,而前面的類型指定輸入參數。

例如,Func<int, int, string> 接受兩個整數參數並返回一條字串消息。

實踐中的委派:範例

讓我們看一些範例以了解 C# 中 FuncAction 委派的工作原理。

Action 委派的範例

預定義的 Action 委派類型用於當您想執行的方法不需要特別返回值時,而是側重於操作時。 這是一個基本範例:

Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");
Dim display As Action(Of String) = Sub(message) Console.WriteLine(message)
display("Hello, World!")
$vbLabelText   $csharpLabel

這段代碼定義了一個 Action 委派,說明了使用匿名方法,該方法接受單個字符串參數並將其打印到控制台。 =>符號用來定義 lambda 表達式,這是一種簡潔的書寫匿名方法的方式。

Func 委派的範例

Func委派,用於返回值,可以如下使用:

Func<int, int, int> add = (x, y) => x + y;
int result = add(5, 3);
Console.WriteLine(result);
Func<int, int, int> add = (x, y) => x + y;
int result = add(5, 3);
Console.WriteLine(result);
Dim add As Func(Of Integer, Integer, Integer) = Function(x, y) x + y
Dim result As Integer = add(5, 3)
Console.WriteLine(result)
$vbLabelText   $csharpLabel

此範例創建一個Func委派,接受兩個整數參數並返回它們的和。 和將會這樣在控制台上顯示:

C# Action(如何為開發者工作):圖 1

關鍵概念

匿名方法

C# 中的匿名方法提供了一種定義內聯方法的方式,而不需要名稱。 它們通常與委派一起使用,以便直接創建委派實例。

Lambda 表達式

Lambda 表達式是一種編寫匿名方法的簡寫方式。 它們允許您編寫更少的代碼,同時實現相同的結果。

泛型委派

泛型委派可以與任何數據類型一起工作。 FuncAction 是泛型委派的例子,通過允許在運行時指定輸入和輸出類型提供更多靈活性。

委派實例

委派實例可以用 new 關鍵字創建,也可以通過簡單地分配與委派簽名匹配的方法來創建。

System 命名空間

.NET 中的 System 命名空間包含內建類型,如 FuncAction,它們是基本類庫的一部分。

使用委派進行異步編程

包含 ActionFunc 的委派是管理 C# 中異步任務的基本工具。 它們允許開發者封裝對方法的引用,然後可以異步執行。 這意味著主應用程序線程可以啟動一個任務,然後在任務完成之前繼續其他工作。

此時,委派引用的回調方法被調用來處理結果。 此模式對於創建響應性用戶界面非常重要,即使在執行長時間運行的操作時,這些界面仍然保持互動。

範例:異步文件處理

考慮一個需要處理大文件的應用程序。使用 Action 委派和類似Task的異步編程模式可以顯著提升應用性能:

public async Task ProcessFileAsync(string filePath, Action<string> onComplete)
{
    // Asynchronously read file content
    string fileContent = await File.ReadAllTextAsync(filePath);
    // Process the file content here (omitted for brevity)

    // Once processing is complete, invoke the onComplete callback
    onComplete?.Invoke("File processing completed successfully.");
}
public async Task ProcessFileAsync(string filePath, Action<string> onComplete)
{
    // Asynchronously read file content
    string fileContent = await File.ReadAllTextAsync(filePath);
    // Process the file content here (omitted for brevity)

    // Once processing is complete, invoke the onComplete callback
    onComplete?.Invoke("File processing completed successfully.");
}
Public Async Function ProcessFileAsync(ByVal filePath As String, ByVal onComplete As Action(Of String)) As Task
	' Asynchronously read file content
	Dim fileContent As String = Await File.ReadAllTextAsync(filePath)
	' Process the file content here (omitted for brevity)

	' Once processing is complete, invoke the onComplete callback
	If onComplete IsNot Nothing Then
		onComplete.Invoke("File processing completed successfully.")
	End If
End Function
$vbLabelText   $csharpLabel

在此示例中,使用 File.ReadAllTextAsync 來讀取文件內容,而不阻塞主線程。 一旦文件處理完畢,名為onCompleteAction委派就會被調用來通知調用者操作完成,從而可以進行進一步的操作,如更新 UI 或記錄結果。

IronPDF介紹:C# PDF 庫

IronPDF 是一個綜合的 C# PDF 庫,設計給 .NET 開發人員輕鬆創建、編輯和操作 PDF 文件。 它以基於 Chrome 的渲染引擎為特色,確保從HTML 內容、CSS、JavaScript 和圖片生成像素完美的 PDF。

IronPDF 兼容多種 .NET 框架和環境,包括 .NET Standard、.NET Framework 和 .NET Core,適用於 Windows、Linux 和 macOS 平台。

安裝 IronPDF

要將 IronPDF 合併到您的 .NET 項目中,您可以使用 NuGet,這是最簡便的方法。 只需打開 Visual Studio 中的套件管理控制台,然後運行以下命令:

Install-Package IronPdf

此命令將提取並安裝 IronPDF 套件,設置您的項目以開始使用 IronPDF 進行 PDF 生成和操作。

帶有 Action 委派的代碼範例

這是一個簡單的示例說明如何使用 IronPDF 和一個 Action 委派來執行 PDF 生成任務:

using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Define an Action delegate that takes HTML content as a string
        Action<string> generatePdf = html =>
        {
            // Render the HTML as a PDF
            var pdf = renderer.RenderHtmlAsPdf(html);

            // Save the PDF to a file
            pdf.SaveAs("example.pdf");
        };

        // Generate the PDF with the provided HTML
        generatePdf("<p>Hello, world!</p>");
        Console.WriteLine("PDF generated successfully.");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Define an Action delegate that takes HTML content as a string
        Action<string> generatePdf = html =>
        {
            // Render the HTML as a PDF
            var pdf = renderer.RenderHtmlAsPdf(html);

            // Save the PDF to a file
            pdf.SaveAs("example.pdf");
        };

        // Generate the PDF with the provided HTML
        generatePdf("<p>Hello, world!</p>");
        Console.WriteLine("PDF generated successfully.");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' Define an Action delegate that takes HTML content as a string
		Dim generatePdf As Action(Of String) = Sub(html)
			' Render the HTML as a PDF
			Dim pdf = renderer.RenderHtmlAsPdf(html)

			' Save the PDF to a file
			pdf.SaveAs("example.pdf")
		End Sub

		' Generate the PDF with the provided HTML
		generatePdf("<p>Hello, world!</p>")
		Console.WriteLine("PDF generated successfully.")
	End Sub
End Class
$vbLabelText   $csharpLabel

此示例定義了一個 Action 委派,它接受一個 HTML 字符串並使用 IronPDF 將其渲染成 PDF 文檔。 然後將生成的 PDF 保存到文件系統中。 這種方法演示了如何使用委派來封裝 PDF 生成邏輯,從而使您的代碼更加模塊化和靈活。

C# Action(如何為開發者工作):圖 2

許可證

C# Action(如何為開發者工作):圖 3

IronPDF 為開發者提供各種許可證選項,從個人開發者許可到企業合約。 這些許可證的價格從$799起。

結論

現在,您應該對 C# 中的ActionFunc 委派、以及如何使用匿名方法和 lambda 表達式有基本了解。 記住,練習是掌握委派概念的關鍵。嘗試創建您自己的範例來定義、分配和調用委派。

您可以通過它的免費試用版自由探索 IronPDF 的功能。 如果它符合您的項目需求,您可以確保價格從$799開始的許可。

常見問題解答

什麼是 C# 的 Action 委派?

在 C# 中,Action 委派是一種預定義的委派類型,用於執行不返回值的方法。它通常用於不需要返回結果的操作。

如何在 C# 中使用 Func 委派?

Func 委派用於封裝返回值的方法。您需要將返回類型作為最後一個參數指定。它適用於需要返回計算結果的方法。

Func 和 Action 委派之間有什麼區別?

主要區別在於 Func 委派返回值,而 Action 委派則不會返回值。當方法需要返回結果時使用 Func,而 Action 則用於不返回值的過程。

如何在 C# 應用程式中創建 PDF?

您可以使用 IronPDF 在 C# 應用程序中創建 PDF。它允許您使用基於 Chrome 的渲染引擎生成 PDF,並可使用委派整合到 .NET 應用中。

C# 中的 lambda 表達式是什麼,它們與委派有何關係?

Lambda 表達式是一種簡潔的方式用於編寫內嵌方法,常與委派一起使用以簡化代碼。它們允許您簡潔地表示方法,並經常與 Action 和 Func 委派一起使用。

如何使用委派在 C# 中處理異步任務?

像 Action 和 Func 這樣的委派可用於封裝異步執行的方法。這種方法允許您的應用程式在等待任務完成時執行其他操作,提高了性能和響應能力。

如何在 .NET 項目中安裝 C# 的 PDF 創建庫?

要在您的 .NET 項目中安裝類似 IronPDF 的庫,請在包管理器控制台中使用 NuGet 和命令:Install-Package IronPdf。這將為您的項目準備 PDF 創建和操作。

C# 中的匿名方法是什麼?

匿名方法允許您定義無名稱的內嵌方法,常與委派一起使用以直接創建委派實例。它們為作為參數傳遞代碼塊提供了一種方式。

C# 中的泛型委派是什麼?

泛型委派是可以使用任何數據類型的委派。Func 和 Action 是泛型委派的例子,因為它們允許您在運行時定義輸入和輸出參數的類型。

.NET 中的 System 命名空間及其重要性是什麼?

.NET 中的 System 命名空間包含基本類型和類,例如 Func 和 Action,它們是基礎類庫的一部分,提供開發 C# 應用所需的核心功能。

Curtis Chau
技術作家

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

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