C# イベントについて <コールバックとデリゲート基礎>
C#におけるイベントとは
「デリゲートによるコールバックメカニズムに、安全な購読と購読解除機能を追加するための文法」
●イベントを理解するためには、コールバックとデリゲート
・コールバックとは
ある処理に対し、そこから呼び出してほしい処理を渡すこと。
C#において、こうした「処理を渡す」際に使用する、メソッドへの参照のことをデリゲートと呼ぶ。
C言語の関数ポインタなどと同様に、C#のデリゲートもコールバックを実現するための機能になる。
しかし、C#の場合、オブジェクト指向言語なので、
静的メソッドなのか、インスタンスメソッドなのか。
インスタンスメソッドだとすれば、どのオブジェクトのそれを呼び出すべきなのか。
という情報まで内部で渡している。
デリゲートには、メソッドであれば何でも渡せるわけではなく、引数の数や型、戻り値の型が一致していなければならない。
例
「int型の引数を取り、bool型を返す」という処理に渡すため、Func<int,bool>という型を使用
class Hoga
{
・・・
//Use LINQ, Luke.
public IEnumerable<int> GetNumbers(Func<int,bool>pred)
{
foreach(var n in List)
if(pred(n))
yield return n;
}
}
class Hoga
{
static bool Equals3(int n)
{
return n % 3 ==1;
}
・・・
var enm = hoge.GetNumbers(Equals3);
}