在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在本教程中,我們將教授 C# Action、Func delegate 以及相關主題的概念。本指南專為初學者設計,將逐步帶您了解基礎知識、提供示例並解釋關鍵術語。 動作委派讓我們先了解在 C# 中何謂委派。 我們將探討 IronPDF 稍後在本文中。
委託是一種編程結構,作為方法的引用,由特定的一組參數和返回類型定義,封裝了如預定義委託類型等功能,並允許方法返回值。
它允許方法作為參數傳遞。本質上,委託充當函數指針,指向它所代表的方法。在 C# 中,有兩種廣泛使用的預定義委託類型:Func 和 Action。
Func 委託表示一個可以有返回值的方法。最後一個類型參數指定返回類型,前面的類型參數指定輸入參數。
例如,Func<int, int, string> 需要兩個整數參數並返回一個字符串訊息。
讓我們看看一些範例,了解 Func 和 Action 委派在 C# 中的使用方式。
行動委派(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!")
這段程式碼定義了一個 Action 委託,展示了匿名方法的使用,該方法接受一個字符串參數並將其打印到控制台上。符號 => 用於定義 lambda 表達式,這是一種編寫匿名方法的簡潔方式。
一個返回值的 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 表達式是書寫匿名方法的一種簡寫方式。它們讓你用更少的代碼實現相同的結果。
通用委派可以處理任何數據類型。Func 和 Action 是通用委派的例子,通過允許在運行時指定輸入和輸出類型提供了更多靈活性。
委派實例是用 new 關鍵字創建的,或簡單地指定與委派簽名匹配的方法。
.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 是一個為 .NET 開發人員設計的綜合性 C# PDF 庫,可以輕鬆創建、編輯和處理 PDF 文件。它以基於 Chrome 的渲染引擎為特色,確保 從HTML生成像素完美的PDF, CSS, JavaScript 和圖片。
IronPDF 與多種 .NET 框架和環境兼容,包括 .NET Standard、.NET Framework 和 .NET Core,適用於 Windows、Linux 和 macOS 平台。
要將 IronPDF 整合到你的 .NET 專案中,你可以使用 NuGet 這個最簡單的方法。只需在 Visual Studio 中打開套件管理器控制台,然後運行以下命令:
Install-Package IronPdf
此命令將獲取並安裝 IronPDF 套件,設置您的項目以開始使用 IronPDF 進行 PDF 生成和操作。
以下是使用 IronPDF 和 Action 委派執行 PDF 生成任務的一個簡單範例:
using IronPdf;
using System;
class Program
{
static void Main(string [] args)
{
var renderer = new ChromePdfRenderer();
Action<string> generatePdf = html =>
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("example.pdf");
};
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();
Action<string> generatePdf = html =>
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("example.pdf");
};
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()
Dim generatePdf As Action(Of String) = Sub(html)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("example.pdf")
End Sub
generatePdf("<p>Hello, world!</p>")
Console.WriteLine("PDF generated successfully.")
End Sub
End Class
此範例定義了一個 Action 委託,該委託接受一個 HTML 字串並使用 IronPDF 將其轉換為 PDF 文件。
生成的 PDF 然後被保存到文件系統中。此方法展示了如何使用委託來封裝 PDF 生成邏輯,使您的代碼更具模組化和靈活性。
IronPDF 提供各種 授權選項從個別開發者許可證到企業協議的許可證。這些許可證的價格從 $749 起。
到了此時,你應該已經基本了解C#中的Action和Func委派,以及如何使用匿名方法和lambda表達式。請記住,練習是掌握委派概念的關鍵。嘗試創建自己的例子來定義、分配和調用委派。
你可以自由探索IronPDF的功能 免費試用. 如果符合您的項目需求,您可以購買價格從 $749 開始的許可證。