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 件のコメント:
コメントを投稿