Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#添加事件处理程序文本代码块_C#_Event Handling - Fatal编程技术网

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"]; };

是否可以在C#中添加文字代码块作为事件处理程序?比如:

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); 
};