時には私は最も単純なことを理解できません。私はそれが私の顔にあると確信しています。この単純なクラスでメソッドのデリゲートを作成しようとして イム:アクション<>複数のパラメータの構文説明
今public static class BalloonTip
{
public static BalloonType BalType
{
get;
set;
}
public static void ShowBalloon(string message, BalloonType bType)
{
// notify user
}
}
、このアクション<は>私が正しく理解してなかった、実際にはキーワード「デリゲート」を持つものを宣言せずにデリゲートを作成することになっていますか?次に:
private void NotifyUser(string message, BalloonTip.BalloonType ballType)
{
Action<string, BalloonTip.BalloonType> act;
act((message, ballType) => BalloonTip.ShowBalloon(message, ballType));
}
これはコンパイルに失敗します。どうして?
(ちなみに、ShowBalloon()を直接呼び出すのではなく、この代理人が必要なのはUI以外のスレッドから呼び出しを行う必要があるためです)
おかげで、
あなたはまず、Action
変数にあなたの匿名メソッドを割り当てるメソッドに渡される引数でそれを呼び出す必要が
アクション<>は何も特別なものではなく、.NET Frameworkの「システム」名前空間に含まれる汎用代理人(またはむしろセット)です。 – Marlon