1
29
在某些方面,这是一个骗局。
这里的问题源于使用匿名方法内部的匿名方法之外声明的值的效果。这样做将捕获lambda中的值,并且出于必要,可以任意地将其寿命延长到当前函数的寿命之外。这与不兼容
例如,假设
|
2
6
这基本上是因为匿名委托/lambda表达式的参数是
捕获的变量
捕捉
如果你想要一个完整的解释, Eric Lippert discussed this design point in detail 在他的博客上。(特别参见底部附近的段落。) |
3
1
唯一的区别是
为了实现它,编译器必须生成
如果你仔细想想,你会发现允许匿名方法使用
以下代码将用于什么?
|
4
1
我在开发一些错误处理代码时遇到了这个难题。我想把一个引用传递给一个将被记录的错误消息。这使我的匿名方法有机会执行多个检查,每个检查都会根据需要设置错误消息。 最后我为匿名方法编写了一个新的包装器,它的工作方式不同。但是我认为对某些人来说可能是有价值的,我可以简单地创建一个带有out参数的私有方法,并定义一个委托,然后让我的代码使用它。希望这能帮助/激励某人。
|