C# Action(對於開發者的運行原理)
在本教程中,我們將教授C# Action、Func delegate的概念及相關主題。 本指南專為初學者設計,將帶您了解基礎知識、提供範例並解釋action delegate的關鍵術語。
讓我們首先了解C#中的委派是什麼。 稍後我們會在文章中探討IronPDF程式庫。
理解C#中的委派
委派是一種程式設計構造,作為方法的參考,由一組特定的參數和返回型別定義,封裝功能如預定義的委派型別,並允許方法返回值。
它允許將方法作為參數傳遞。 本質上,委派就像是一個函式指標,指向它所代表的方法。 在C#中,有兩種廣泛使用的預定義委派型別:Func和Action。
什麼是Func委派?
Func委派表示可以具有返回值的方法。 最後的型別參數指定返回型別,而之前的型別指定輸入參數。
例如,Func<int, int, string>接收兩個整數參數並返回一個字串訊息。
實踐中的委派:範例
來看一些範例,了解C#中Func和Action委派如何運作。
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!")
此程式碼定義了一個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)
本範例建立了一個接受兩個整數參數並返回其和的Func委派。 和會在控制台顯示如下:

關鍵概念
匿名方法
C#中的匿名方法提供了一種定義內聯方法而不需名稱的方法。 它們通常與委派一起使用,以直接建立委派實例。
Lambda表達式
Lambda表達式是編寫匿名方法的簡寫。 它們允許您用更少的程式碼達到相同的結果。
泛型委派
泛型委派可以與任何資料型別一起使用。 Func和Action是泛型委派的例子,通過允許您在運行時指定輸入和輸出型別提供了更大的靈活性。
委派實例
一個委派實例是通過new關鍵字建立的,或簡單地分配一個匹配委派簽名的方法。
System命名空間
.NET中的System命名空間包含內建型別如Func和Action,這些是基礎類庫的一部分。
使用委派進行異步程式設計
委派,包括Action和Func,在管理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
在本例中,File.ReadAllTextAsync用於讀取文件內容而不阻礙主執行緒。 文件處理完成後,一個名為onComplete的Action委派被調用以通知調用者操作已完成,允許進一步操作如更新UI或記錄結果。
介紹IronPDF:一個C#的PDF函式庫
IronPDF是專為.NET開發者設計的全面C# PDF程式庫,能輕鬆建立、編輯和操作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
此範例定義了一個Action委派,它接收HTML字串,並使用IronPDF將其轉換成PDF文件。 生成的PDF然後保存在文件系統中。 此方法展示了如何使用委派來封裝PDF生成邏輯,使您的程式碼更加模組化和靈活。

授權

IronPDF提供各種開發者授權選項,從個別開發者授權到企業協議。 這些授權的定價從$999開始。
結論
到目前為止,您應該對C#中的Action和Func委派、以及如何使用匿名方法和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# 應用程式所需的核心功能。




