
C# Action(開発者向けの動作方法)
このチュートリアルでは、C# Action、Func デリゲート、および関連トピックのコンセプトを教えます。 このガイドは初心者向けに設計されており、基本を解説し、例を提供し、action delegateの重要な用語を説明します。
まず、C#のデリゲートとは何かを理解することから始めましょう。 記事の後半でIronPDFライブラリを探ります。
C#におけるデリゲートの理解
デリゲートは、特定のパラメーターセットと戻り値の型で定義されるメソッドへの参照として機能し、事前定義されたデリゲートタイプなどの機能をカプセル化し、メソッドが値を返すことを可能にするプログラミング構造です。
それはメソッドを引数として渡すことができます。 本質的に、デリゲートは関数ポインタとして機能し、それが表すメソッドを指します。 C#では、広く使用される2つの事前定義されたデリゲートタイプがあり、それがFuncとActionです。
Func デリゲートとは?
Funcデリゲートは、戻り値を持つことができるメソッドを表します。 最後の型パラメーターは戻り値の型を指定し、先行する型は入力パラメーターを指定します。
たとえば、**Func<int, int, string>**は2つの整数パラメーターを受け取り、文字列メッセージを返します。
実践におけるデリゲート: 例
C#においてFuncおよびActionデリゲートがどのように機能するかを理解するために、いくつかの例を見てみましょう。
Action デリゲートの例
値を具体的に返さないメソッドの実行を希望する場合、操作に焦点を当てた事前定義のデリゲートタイプであるActionデリゲートが使用されます。 ここに基本的な例があります:
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");Dim display As Action(Of String) = Sub(message) Console.WriteLine(message)
display("Hello, World!")このコードは、1つの文字列パラメーターを取り、それをコンソールに出力する匿名メソッドを用いたActionデリゲートの使用を示しています。 **=>**シンボルは、無名メソッドを書くための簡潔な方法であるラムダ式を定義するために使用されます。
Func デリゲートの例
値を返すFuncデリゲートは次のように使用することができます:
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)この例では、2つの整数パラメーターを取り、その合計を返すFuncデリゲートを作成します。 合計はこのようにコンソールに表示されます:

主要概念
無名メソッド
C#における無名メソッドは、名前なしでインラインメソッドを定義する方法を提供します。 しばしばデリゲートと共に使用され、直接デリゲートインスタンスを作成します。
ラムダ式
ラムダ式は無名メソッドを書くための省略形です。 同じ結果を達成しつつ、少ないコードを書くことができます。
ジェネリックデリゲート
ジェネリックデリゲートはどんなデータ型でも扱うことができます。 FuncとActionはジェネリックデリゲートの例で、実行時に入出力タイプを指定することにより、より多くの柔軟性を提供します。
デリゲートインスタンス
newキーワードでまたは単にデリゲートのシグネチャに一致するメソッドを割り当てることでデリゲートインスタンスを作成します。
System 名前空間
.NETにおけるSystem名前空間には、FuncやActionのような組み込み型が含まれており、これらは基底クラスライブラリの一部です。
デリゲートを使用した非同期プログラミング
デリゲートは、ActionやFuncを含め、C#における非同期タスクの管理において重要な役割を果たします。 デベロッパーが非同期に実行できるメソッドへの参照をカプセル化することを可能にします。 これは、メインのアプリケーションスレッドがタスクを開始した後、タスク完了まで他の作業を続けることを意味します。
その時点で、デリゲートによって参照されるコールバックメソッドが呼び出され、結果の処理を行います。 このパターンは、長時間実行される操作中にインタラクティブな状態を保つために、応答性の高いユーザーインターフェイスを作成するために重要です。
例: 非同期ファイル処理
大きなファイルを処理する必要があるアプリケーションを考えてみましょう。非同期プログラミングパターンであるTaskのようなものと組み合わせたActionデリゲートの使用は、アプリケーションのパフォーマンスを大幅に向上させることができます。
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(filePath As String, 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
onComplete?.Invoke("File processing completed successfully.")
End Functionこの例では、File.ReadAllTextAsyncを使用して、メインスレッドをブロックせずにファイルの内容を読み取ります。 ファイルが処理されたら、onCompleteというActionデリゲートが呼び出され、UIの更新や結果の記録などのさらなるアクションが可能になります。
IronPDFの紹介:C# PDFライブラリ
IronPDFは、.NET開発者向けにPDFを作成・編集・操作する包括的なC#ライブラリです。 それは拡張された機能で、HTMLコンテンツ、CSS、JavaScript、および画像からピクセル完璧なPDFを保証し、Chromeベースのレンダリングエンジンで差別化されています。
IronPDFは、Windows、Linux、およびmacOSプラットフォーム全体で、.NET Standard、.NET Framework、.NET Coreを含むさまざまな.NETフレームワークおよび環境と互換性があります。
IronPDFのインストール
あなた for .NETプロジェクトにIronPDFを組み込むには、最も簡単な方法であるNuGetを使用することができます。 Visual Studioのパッケージマネージャーコンソールを開き、次のコマンドを実行するだけです。
このコマンドはIronPDFパッケージを取得しインストールし、PDFの生成と操作のためにIronPDFの使用を開始するためにプロジェクトを設定します。
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.");
}
}Imports IronPdf
Imports System
Module Program
Sub Main(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 Moduleこの例はHTML文字列を取り、それをPDFドキュメントにレンダリングするためにIronPDFを利用するActionデリゲートを定義します。 生成されたPDFはファイルシステムに保存されます。 このアプローチは、デリゲートを使用してPDF生成ロジックをカプセル化し、コードをよりモジュラーで柔軟にする方法を示しています。

ライセンス
IronPDFは開発者向けに、個別開発者ライセンスからエンタープライズ契約まで、様々なライセンシングオプションを提供しています。 これらのライセンスの価格は$999から始まります。
結論
これで、C#におけるActionおよびFuncデリゲート、無名メソッドおよびラムダ式の使い方について基本的な理解が得られたはずです。 デリゲートの概念を習得するには、練習が重要です。自身の例を作成し、デリゲートを定義し、割り当て、呼び出すことを試みてください。
IronPDFの機能は試用版で自由に探求することができます。 プロジェクトの要件に合う場合は、価格が$999から始まるライセンスを取得できます。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


