Actionを使って遊んでみた。
Actionは、0個または1個以上の引数を取り、何も返却しないメソッドへのポインタ(Delegate)[
1] らしい。
まずは、受け取ったActionを2回実行するだけのサンプルを書いてみた。ついでにラムダ式にも手を出してみた。ラムダ式は、LINQを使う場合に重宝するそうだ。
using System;
public class Sample
{
public static void Main (string[] args)
{
new Sample ().Run ();
}
private void doItTwice (Action action)
{
action ();
action ();
}
private void SayHello ()
{
Console.WriteLine ("Hello, World!");
}
public void Run ()
{
doItTwice (SayHello);
doItTwice (() => {
Console.WriteLine ("Hello, Lambda World!");
});
}
}
続いて引数を3つ受け取るActionで何かやってみた。
引数の順序のすべてのpermutationを試してActionを呼ぶサンプル。
using System;
public class Sample
{
public static void Main (string[] args)
{
new Sample ().Run ();
}
private void applyAllPermutationTo(Action<int, int, int> action, int x, int y, int z)
{
action(x, y, z);
action(x, z, y);
action(y, x, z);
action(y, z, x);
action(z, x, y);
action(z, y, x);
}
public void Run() {
applyAllPermutationTo((int x, int y, int z) => {
Console.WriteLine("{0} * {1} - {2} = {3}", x, y, z, x * y - z);
}, 10, 20, 30);
}
}
C#いろいろ出来てなかなか面白いですね。