Mon*_*hus 0 c# foreach lambda list
我有一个问题,我可以使用这样的东西解决
sortedElements.ForEach((XElement el) => PrintXElementName(el,i++));
Run Code Online (Sandbox Code Playgroud)
这意味着我在ForEach中有一个允许使用int i等参数的lambda.
我喜欢这样做的方式,但我读到某处匿名方法和lambda委托会导致大量内存泄漏,因为每次执行lambda时都会实例化某些内容但不会被释放.这样的事情.
你能告诉我这种情况是否属实,如果是这样的话?
我喜欢这样做的方式,但我读到某处匿名方法和lambda代理会导致大量内存泄漏,因为每次执行lambda时都会实例化某些内容但不会被释放
不,那不是真的.现在,在委托被垃圾收集之前,不会释放使用过的资源.它就像任何其他托管对象一样,但在大多数情况下使用Lambda表达式并不比以另一种方式完成相同的操作效率低.
这并不是说你不能使lamda表达式导致大量内存泄漏,它就像任何其他代码一样.如果你说要做的事情
(x => //open unmanaged resource here and not close it....)
Run Code Online (Sandbox Code Playgroud)
并在foreach
循环中调用它,这可能非常糟糕.
你要记住的是你的Lamda表达本质上是
(XElement el) => PrintXElementName(el,i++)
void Your_Function (XElement el)
{
PrintXElementName(el,i++);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
690 次 |
最近记录: |