c# - 为什么在匿名方法中不允许使用 out 参数?

标签 c# anonymous-methods out-parameters ref-parameters

这不是 Calling a method with ref or out parameters from an anonymous method 的骗局

我想知道为什么 out 参数在匿名方法中是不允许的。不允许 ref 参数对我来说更有意义,但是 out 参数,就没那么多了。

你对此有何看法

最佳答案

在某些方面,这是一个骗局。 Out 参数是ref 参数。 C# 语言使用的值只是一个额外的属性。不允许它们的原因与 ref 参数完全相同。

这里的问题源于在匿名方法中使用在匿名方法之外声明的值的效果。这样做会捕获 lambda 中的值,并且出于必要而任意延长其生命周期,使其超出当前函数的生命周期。这与具有固定生命周期的 out 参数不兼容。

例如,假设 out 参数引用堆栈上的局部变量。 lambda 可以在未来的任意点执行,因此可以在该堆栈帧不再有效时执行。那么 out 参数意味着什么?

关于c# - 为什么在匿名方法中不允许使用 out 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637863/

相关文章:

c# - 来自 .mp4 的 channel 音频?

c# - XNA如何使xna不读取透明颜色

c# - 在 C# : Why Does Out Parameter Need to be Named As Well? 中混用和命名参数

PHP、PDO 存储过程不返回任何内容或返回未更改的值

.net - 如何实现与 Dictionary.TryGetValue 相同的行为

c# - ASP.NET: "Default Membership Provider could not be found"错误

c# - PRISM 中的 CreateModuleCatalog() 和 ConfigureModuleCatalog() 有什么区别?

delphi - 在Delphi 2009中使用泛型和匿名方法有什么问题?

c# - 通过匿名方法分配匿名类型的属性

delphi - 可选的匿名方法