Kei*_*ler 5 c# performance lambda delegates
如果使用Lambda处理异步回调与老式事件处理程序相比具有哪些性能优势呢?
我发现我更多地使用这种模式,因为它允许我访问方法级数据,并且它不会丢弃我的代码方法:
this.Click += (s, e) => { MessageBox.Show(((MouseEventArgs)e).Location.ToString());};
Run Code Online (Sandbox Code Playgroud)
lambda只是一个由编译器创建的委托.实际上,它的表现完全相同.
从技术上讲,通常会有一个(令人难以置信的轻微)性能下降,因为创建了一个额外的类来处理闭包,传统的"事件处理程序"通常只是调用事件的同一个类的委托引用.如果不关闭任何局部变量,则两者将具有完全相同的性能特征.在您的情况下,由于您没有关闭变量,因此没有生成额外的类,因此存在零差异.
使用lambda的主要缺点不是性能,而是无法取消订阅事件.
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |