这不是 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/