【发布时间】:2011-09-23 14:39:45
【问题描述】:
是否可以在 C# 中添加文字代码块作为事件处理程序?比如:
Timer t = new Timer(1000);
t.Elapsed += new ElapsedEventHandler({ Console.WriteLine("Tick"); });
您可以在 PowerShell 中执行此操作,所以我认为在 C# 中也可能有一些方法可以执行此操作。
【问题讨论】:
标签: c# event-handling
是否可以在 C# 中添加文字代码块作为事件处理程序?比如:
Timer t = new Timer(1000);
t.Elapsed += new ElapsedEventHandler({ Console.WriteLine("Tick"); });
您可以在 PowerShell 中执行此操作,所以我认为在 C# 中也可能有一些方法可以执行此操作。
【问题讨论】:
标签: c# event-handling
您可以使用 lambda 表达式(C# 3.0 及更高版本):
t.Elapsed += (sender, args) => Console.WriteLine("Tick");
或匿名方法(C# 2.0 及更高版本):
// If you don't need the parameter values
t.Elapsed += delegate { Console.WriteLine("Tick"); };
// If you do need the parameter values
t.Elapsed += delegate(Object sender, ElapsedEventArgs args) {
Console.WriteLine("Tick from {0}", sender);
};
【讨论】:
delegate语法省略参数声明。
t.Elapsed += delegate(object sender, ElapsedEventArgs args)
{
Console.WriteLine["Tick"];
});
或者,您也可以使用 lambda 语法:
t.Elapsed += (sender, args) => { Console.WriteLine["Tick"]; };
【讨论】:
() 否则它需要一个没有参数的委托类型。