跳過到頁腳內容
.NET幫助

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

在本教程中,我們將教導 C# ActionFunc delegate 及相關主題的概念。 本指南專為初學者設計,將引導您瞭解基礎知識、提供範例,並解釋 action delegate 的關鍵詞彙。

讓我們先了解 C# 中的委託是什麼。 我們稍後將探討 IronPDF 函式庫

瞭解 C# 中的委託函式#。

委託是一種程式結構,可作為方法的參照,由一組特定的參數和回傳類型定義,封裝了預定義的委託類型等功能,並允許方法回傳值。

它允許傳送方法作為參數。 基本上,委託是一個函數指標,指向它所代表的方法。 在 C# 中,有兩種預定義的 delegate 類型被廣泛使用:FuncAction

什麼是 Func Delegate?

Func delegate 代表一個可以有回傳值的方法。 最後一個類型參數指定回傳類型,前面的類型指定輸入參數。

例如,Func<int, int, string>需要兩個整數參數,並傳回一個字串訊息。

實務中的委託:範例

讓我們來看看一些範例,以瞭解 FuncAction 代表如何在 C# 中運作。

動作委託的範例

Action delegate 是一種預先定義的 delegate 類型,當您想要執行不特定回傳值的方法時,就會使用 Action delegate,而將重點放在操作上。 以下是一個基本範例:

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 delegate,說明匿名方法的使用,該方法接收單一字串參數,並將其列印到控制台。 => 符號用於定義 lambda 表達式,這是撰寫匿名方法的簡潔方式。

Func委託的範例

返回值的 Func delegate 可用如下方式使用:

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 delegate,可接收兩個整數參數並返回其總和。 和會像這樣顯示在控制台上:

C# Action (How It Works For Developers):圖 1

主要概念

匿名方法

C# 中的匿名方法提供了一種定義沒有名稱的內聯方法的方法。 這些工具通常與 delegate 搭配使用,可直接建立 delegate 實體。

Lambda 表達式

Lambda 表達式是撰寫匿名方法的速記。 這些工具可讓您少寫程式碼,卻能達到相同的效果。

一般委託

泛型委託可以處理任何資料類型。 FuncAction 是泛型委派的範例,可讓您在執行時指定輸入和輸出類型,提供更多的彈性。

委託實例

委託實體是使用 new 關鍵字或簡單地指定符合委託簽章的方法來建立的。

系統命名空間

.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 delegate 來通知呼叫者作業已完成,以便進行更新 UI 或記錄結果等進一步動作。

IronPDF 簡介:一個 C# PDF 函式庫。

IronPDF是一個全面的 C# PDF 函式庫,專為 .NET 開發人員設計,可輕鬆建立、編輯和處理 PDF 檔案。 它與眾不同之處在於採用 Chrome 演算引擎,可確保 從 HTML 內容、CSS、JavaScript 及圖片產生像素完美的 PDF。

IronPDF for .NET 兼容 Windows、Linux 和 macOS 平台上的各種 .NET 框架和環境,包括 .NET Standard、.NET Framework 和 .NET Core。

安裝 IronPDF。

要將 IronPDF 加入您的 .NET 專案,您可以使用 NuGet,這是最直接的方法。 只要開啟 Visual Studio 中的套件管理員控制台,並執行下列指令即可:

Install-Package IronPdf

此指令會取得並安裝 IronPDF 套件,設定您的專案開始使用 IronPDF 來產生和處理 PDF。

使用動作委託的程式碼範例

以下是一個簡單的範例,示範如何使用 IronPDF 搭配 Action delegate 來執行 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 delegate,它接收 HTML 字串並使用 IronPDF 將其渲染為 PDF 文件。 生成的 PDF 隨後會儲存到檔案系統中。 此方法展示了如何使用委託來封裝 PDF 生成邏輯,使您的程式碼更具模組化和彈性。

C# Action (How It Works For Developers):圖 2

授權

C# Action (How It Works For Developers):圖 3

IronPDF 為開發人員提供多種授權選項,從個人開發人員授權到企業協議。 這些許可證的定價從 $999 起。

結論

到目前為止,您應該對 C# 中的 ActionFunc 代表,以及如何使用匿名方法和 lambda 表達式有了基本的了解。 請記住,練習是掌握委託概念的關鍵。嘗試建立您自己的範例來定義、指派和呼叫委託。

您可以使用 免費試用版自由探索 IronPDF 的功能。 如果符合您的專案要求,您可以獲得許可證,價格從 $999 起。

常見問題解答

什麼是 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# 應用所需的核心功能。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

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

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

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