Action<T>を利用したカプセル化
Action<>は単一のパラメーターを受け取り、戻り値を持たないメソッドをカプセル化します。
つまりvoid Func(T param)なら使えるデリゲート型
public partial class MainWindow : Window
{
Action<string> MessageTarget;
public MainWindow()
{
InitializeComponent();
bool flag;
flag=true;
if (flag)
MessageTarget = Show;
else
MessageTarget = Console.WriteLine;
MessageTarget("Hello!");
}
private void Show(string obj)
{
MessageBox.Show(obj);
}
}
Action<>は複数のパラメーターも扱える。返り値は持たない
Func<>も同様の効果を持ち、こちらは返り値を持たせる事ができる。最後のパラメータの型が返り値
public partial class MainWindow : Window
{
public Func<int, int, bool> testFunc { get; set; } //受け付けるパラメータ数はまだ増やせる、最期のパラメータが返り値の型になる
public Func<string, string> testFunc2 { get; set; }
public Action<object, object> testAction { get; set; } //パラメータ数は増やせる。返り値はもたない
public MainWindow()
{
InitializeComponent();
var d = testFunc;
d = Method;
Console.WriteLine(d(5,3).ToString());
testFunc2 = UpperString;
Console.WriteLine(testFunc2("aBcDeF"));
var dd = testAction;
object a = "aaaa";
object b = "bbbb";
dd = Method2;
dd(a, b);
}
public bool Method(int x, int y)
{
return (x > y);
}
public string UpperString(string s)
{
return s.ToUpper();
}
public void Method2(object a, object b)
{
MessageBox.Show(a.ToString() + b.ToString());
}
}
最終更新:2012年10月30日 01:03