.net column
.NET開発者のためのブログメディア

C#のコールバック関数とは?C#のコールバック関数について紹介

2020年08月25日

SE
コールバック関数とはどういったものなのか教えてください。

PM
コールバック関数とは、特定のタスクの実行が完了した際に呼び出される関数のことです。詳しく見ていきましょう。

C#でのコールバック関数について


今回は、C#でのコールバック関数について説明します。

コールバック関数とは、何かの処理が終わったあとに、実行したい処理のことです。非同期処理の終了を通知する場合などに使用されます。

ここでは、Delegateを使ったコールバック関数について紹介します。C#でのコールバック関数に興味のある方はぜひご覧ください。

Delegateとは

C#でのコールバック関数の前にDelegateについて説明します。

Delegateとは、C言語でいうところの関数ポインタのようなものです。関数を変数のように扱うことができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

変数helloに関数Helloを代入して実行しています。Hello World!が出力されることが分かります。

ここでは、Delegateの関数に引数はありませんが、引数を追加することもできます。このように、C#ではDelegateを利用して関数を変数のように扱うことができます。

Delegateとコールバック関数

C#では、Delegateを利用すれば、コールバック関数として呼び出すことができます。コールバック関数で非同期処理の終了を通知します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

AfterSomeMethodをコールバック関数として指定しています。SomeMethodが終了すると、コールバック関数が実行されます。

このように、C#ではDelegateを利用すれば、コールバック関数として呼び出すことができます。

Action型変数

Delegate定義しなくても、Action型の変数にすれば、ソースコードがシンプルになります。

実際のソースコードを見てみましょう。

delegate型の宣言を削除しています。また、SomeMethodの引数を”Action<bool>”にしています。

このように、C#ではDelegateを定義しなくても、Action型の変数にすればソースコードがシンプルになります。

ラムダ式

ラムダ式を利用すれば、さらにシンプルに記述できます。

実際のソースコードを見てみましょう。

AfterSomeMethodを削除しました。SomeMethodの引数にラムダ式を使用しました。

このように、C#ではラムダ式を利用すれば、さらにシンプルに記述できます。

SE
#Cの関数ポインタのようなものと考えるとわかりやすいですね。

PM
そうですね。コールバック関数と覚えるとわかりにくくなるかもしれません。皆さんの覚えやすい定義で覚えていくのが無難でしょう。

まとめ

いかがでしたでしょうか。C#での、Delegateを使ったコールバック関数について説明しました。

コールバック関数とは、何かの処理が終わったあとに、実行したい処理のことです。非同期処理の終了を通知する場合などに使用されます。

ぜひご自身でC#のソースコードを書いて、理解を深めてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags