如果Tick-handling函数只在一个上下文中使用(即总是在同一个函数中与同一个Timer对象结合使用),为什么还要将它作为一个单独的函数呢?当我想到这一点时,这就是我的想法。
是否可以将匿名函数绑定到Timer的tick事件?这就是我想要做的。
Timer myTimer = new Timer();
myTimer.Tick += new EventHandler(function(object sender, EventArgs e) {
MessageBox.Show("Hello world!");
});
答案 0 :(得分:32)
您正在寻找Anonymous Methods:
myTimer.Tick += delegate (object sender, EventArgs e) {
MessageBox.Show("Hello world!");
};
您也可以省略参数:
myTimer.Tick += delegate {
MessageBox.Show("Hello world!");
};
在C#3.0中,您还可以使用Lambda Expression:
myTimer.Tick += (sender, e) => {
MessageBox.Show("Hello world!");
};
答案 1 :(得分:6)
一个完整的例子是:
Timer timer = new Timer();
timer.Interval = 500;
timer.Tick += (t, args) =>
{
timer.Enabled = false;
/* some code */
};
timer.Enabled = true;
答案 2 :(得分:4)
您对匿名方法使用delegate
关键字:
Timer myTimer = new Timer();
myTimer.Tick += delegate(object sender, EventArgs e) {
MessageBox.Show("Hello world!");
};
在C#3.0及更高版本中,您还可以使用lambdas:
Timer myTimer = new Timer();
myTimer.Tick += (sender, e) => MessageBox.Show("Hello world!");