ファンキーチューズデー!!!
私は、ラジオを聴きながら作業をすることが多いんです。
一年365日中、ラジオを全く聞かない日は7日とないと断言できるほど、ラジオをよく聞いています。
ところで、皆さんは、FM Nack5の金曜日に9時間の長丁場の中放送されている「ファンキーフライデー」という番組をご存じでしょうか?
ベストヒットU.S.Aなどでお馴染みの小林克也さんがDJをやっている。この番組が、なんとも面白い。でも、今はどうでもいいことなので一先ず置いておくことにします。
Actionというデリゲート型をスロットマシンを作ってみたっで扱いましたが、
記事を書く上で今一理解不足であることを否定しがたい反省からか、自分なりに少し調べてみました。
Action型は、引数や戻り値を持たないVBやなんかで言うところのSubプロシージャのようなときに使うもの。
その対になった考え方として、Func型というのがあります。これが、Functionプロシージャのように、値を返す時に使うデリゲートであるということがわかりました。
そこで、下記のようなコードを書いてみました。
例によって、ごちゃごちゃしていますが、デリゲートとラムダ式を使って、複雑怪奇なサンプルに仕上がっています。
GitHub
0.コーディング
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample001
{
public class IntNum
{
delegate int calc01(int x);
delegate int calc02(int x, int y);
private int myFunc(int x, int y)
{
return x * y;
}
public int Multiple(int x)
{
calc01 exp01 = xx => x * x;
calc02 exp02 = (yy, zz) => ((zz + 10) * (yy - x));
int num = myFunc(exp01(x), exp02(30, 50));
return num;
}
}
class Program
{
static void Main(string[] args)
{
IntNum test = new IntNum();
Func<int, int> hoge = test.Multiple;
var num = hoge(3);
MessageBox.Show(num.ToString());
num = hoge(9);
MessageBox.Show(num.ToString());
}
}
}
1.コーディング解説
別途、デリゲートの定義が必要ないこと。
引数リストのジェネリクス。
これにて、一件落着でソウロウ。
お後がよろしいようで。