Search on the blog

2014年6月24日火曜日

C#入門(7)Actionで遊んでみる

 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#いろいろ出来てなかなか面白いですね。

0 件のコメント:

コメントを投稿