如何存储函数和参数以供以后执行?



假设我有三个函数:

void A(int i){...}
void B(bool b, string s){...}
void C(float f, double d, char c){...}

在我的应用程序中,在给定的时刻,我打开一个带有按钮的弹出窗口。我的弹出窗口有一个控制器(称为PopupController)。它对弹出框中的所有内容都有参考,并包括按下按钮时调用的OnButtonPress()函数。

我的问题是如何使弹出按钮执行给定参数的这3个函数?

...
var popupController = PopupController.CreateInstance();
//I wanna execute this only at button press:
A(1);
B(true, "s");
C(1, 2, 'c');

我该怎么做?我可以创建任何需要在PopupController中存储这些函数的东西。

委托;例如

Action thing = () => A(1);

EventHandler handler = delegate {
A(1);
B(true, "s");
C(1, 2, 'c');
};

然后在需要时调用该委托,例如thing();handler(this, EventArgs.Empty);

如果按下按钮本身就是一个事件,这就更容易了:

btn.Click += delegate {
A(1);
B(true, "s");
C(1, 2, 'c');
};

最新更新