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