C#添加事件处理程序文本代码块
是否可以在C#中添加文字代码块作为事件处理程序?比如:C#添加事件处理程序文本代码块,c#,event-handling,C#,Event Handling,是否可以在C#中添加文字代码块作为事件处理程序?比如: Timer t = new Timer(1000); t.Elapsed += new ElapsedEventHandler({ Console.WriteLine("Tick"); }); 您可以在PowerShell中执行此操作,因此我认为在C#中也可以执行此操作 或者,也可以使用lambda语法: t.Elapsed += (sender, args) => { Console.WriteLine["Tick"]; };
Timer t = new Timer(1000);
t.Elapsed += new ElapsedEventHandler({ Console.WriteLine("Tick"); });
您可以在PowerShell中执行此操作,因此我认为在C#中也可以执行此操作
或者,也可以使用lambda语法:
t.Elapsed += (sender, args) => { Console.WriteLine["Tick"]; };
可以使用lambda表达式(C#3.0及更高版本): 或匿名方法(C#2.0及更高版本):
这不能像写的那样工作-您需要删除
()
,否则它需要一个没有参数的委托类型。@Jon-是的。在我发布了两个版本后意识到了这一点。两个都修复了。有趣的是,我不知道可以用委托语法省略参数声明。stackoverflow礼仪:我应该在这里问“如何删除匿名事件处理程序”,还是在单独的问题中问?@jmh_gr:搜索它,因为以前几乎肯定有人问过:)(否则,问一个新问题……答案是您将其分配给一个变量,然后使用同一个变量订阅和取消订阅。)……在这种情况下,普通事件处理程序方法将更易于使用。
t.Elapsed += (sender, args) => { Console.WriteLine["Tick"]; };
t.Elapsed += (sender, args) => Console.WriteLine("Tick");
// 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);
};