.NET ヘルプ

C# Action (開発者向けの動作方法)

更新済み 4月 3, 2024
共有:

このチュートリアルでは、C# ActionFunc デリゲート、および関連トピックの概念について説明します。 このガイドは初心者向けに設計されており、基本事項の説明、例の提供、主要な用語の説明を行います。 アクションデリゲート.

C#のデリゲートとは何かを理解することから始めましょう。 次に進めます IronPDF 後ほどこの記事の中で述べます。

C# におけるデリゲートの理解

デリゲートとは、特定のパラメーターセットと戻り値の型によって定義された、メソッドへの参照として機能するプログラミング構造であり、事前定義されたデリゲートタイプのような機能をカプセル化し、メソッドが値を返すことを可能にします。

これにより、メソッドを引数として渡すことができます。 本質的には、デリゲートは関数ポインタとして機能し、それが表すメソッドを指します。 C#では、広く使用されている2つの定義済みデリゲート型があります: FuncAction です。

Funcデリゲートとは何ですか?

Func デリゲートは、戻り値を持つメソッドを表します。 最後の型パラメータは戻り値の型を指定し、それ以前の型は入力パラメータを指定します。

例えば、Func<int, int, string> は2つの整数のパラメータを取り、文字列のメッセージを返します。

実践におけるデリゲート: 例

以下の例を見て、C#におけるFuncActionデリゲートの動作を理解しましょう。

アクション デリゲートの例

アクションデリゲートは、定義済みのデリゲートタイプであり、特定の値を返すことなく、操作に焦点を当てたメソッドを実行したい場合に使用されます。 以下は基本的な例です:

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!")
VB   C#

以下のコードは、アクションデリゲートを定義し、匿名メソッドの使用法を示しています。これは、単一の文字列パラメーターを受け取り、それをコンソールに出力します。 =>シンボルは、ラムダ式を定義するために使用されます。ラムダ式は、無名メソッドを簡潔に記述するための方法です。

関数デリゲートの例

戻り値を返す 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)
VB   C#

この例では、2つの整数パラメーターを取り、それらの合計を返すFuncデリゲートを作成します。 合計はこのようにコンソールに表示されます:

C# アクション (開発者向け動作方法): 図1

主要な概念

匿名メソッド

C#における匿名メソッドは、名前を持たないインラインメソッドを定義する方法を提供します。 それらは、デリゲートと一緒に使用され、直接デリゲートインスタンスを作成するためにしばしば用いられます。

ラムダ式

ラムダ式は、匿名メソッドを記述するための簡略記法です。 それらを使用することで、同じ結果を達成しながら、少ないコードで済みます。

ジェネリックデリゲート

汎用デリゲートは、任意のデータ型で動作することができます。 Func および Action は一般的なデリゲートの例であり、実行時に入力および出力の型を指定することで、より柔軟性を提供します。

デリゲート インスタンス

デリゲートインスタンスは new キーワードを使用して作成するか、またはデリゲートのシグネチャに一致するメソッドを単純に割り当てることで作成されます。

システム名前空間

.NETのSystem名前空間には、基礎クラスライブラリの一部であるFuncActionのような組み込み型が含まれています。

デリゲートを使用した非同期プログラミング

デリゲート、特に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
VB   C#

この例では、File.ReadAllTextAsync を使用して、メインスレッドをブロックせずにファイルの内容を読み取ります。 ファイルが処理されると、onCompleteという名前のActionデリゲートが呼び出され、呼び出し元に操作が完了したことを通知し、UIの更新や結果のログ記録などのさらなるアクションを許可します。

IronPDFの紹介:C# PDFライブラリ

IronPDF .NET開発者が簡単にPDFファイルを作成、編集、および操作できるように設計された包括的なC# PDFライブラリです。 それはChromeベースのレンダリングエンジンを備えており、 HTMLからのピクセルパーフェクトなPDF, CSS、JavaScript、および画像。

IronPDFは、Windows、Linux、macOSプラットフォーム全体で、.NET Standard、.NET Framework、および.NET Coreを含む幅広い.NETフレームワークおよび環境に対応しています。

IronPDFのインストール

IronPDFを.NETプロジェクトに組み込むには、最も簡単な方法としてNuGetを使用できます。 Visual Studioでパッケージマネージャーコンソールを開き、次のコマンドを実行します:

Install-Package IronPdf

このコマンドは IronPDF パッケージを取得してインストールし、プロジェクトを設定して IronPDF を使用したPDF生成および操作を開始します。

アクションデリゲートを使用したコード例

以下は、Actionデリゲートと組み合わせてIronPDFを使用し、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
VB   C#

この例では、HTML文字列を受け取り、IronPDFを使用してPDFドキュメントに変換するActionデリゲートを定義しています。

生成されたPDFは、その後ファイルシステムに保存されます。 このアプローチは、デリゲートを使用してPDF生成ロジックをカプセル化し、コードをよりモジュール化し柔軟にする方法を示しています。

C#アクション(開発者向けの動作方法):図2

ライセンス

C# アクション(開発者向けの動作方法):図 3

IronPDFは様々な ライセンスオプション以下の内容を日本語に翻訳します:

, 個人開発者ライセンスから企業契約まで。 これらのライセンスの価格は $749 から始まります。

結論

これまでに、C#におけるActionデリゲートとFuncデリゲートの基本的な理解、及び匿名メソッドやラムダ式の使用方法について理解しているはずです。 覚えておいてください、デリゲートの概念をマスターするには練習が重要です。自分の例を作成して、デリゲートを定義し、割り当て、呼び出す練習をしてみてください。

IronPDFの機能を自由に探索できます 無料試用. プロジェクトの要件に適している場合は、価格が$749から始まるライセンスを取得することができます。

< 以前
C# レコード(開発者向けの仕組み)
次へ >
C# オブジェクト指向 (開発者向けの仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >