C# 是否将值传递给 Lambda?

2024-01-04

我有一些代码,

int count = 0;

list.ForEach(i => i.SomeFunction(count++));

这似乎不会增加计数。这里count是按值传递的吗?如果我在 lambda 中使用 {} 有什么区别吗?

int count = 0;

list.ForEach(i => 
            {
                    i.SomeFunction(count++);
            });

Update 1

抱歉,我的错误,它确实更新了原始计数。


count是一个int,而int是值类型,这意味着它们确实是按值传递的。您的第一个示例和第二个示例之间没有语义差异。

(也就是说,在我看来它应该增加count,因为它应该捕获直到闭包为止的原始引用。澄清一下——虽然 count 将按值传递到 SomeFunction 中,但当您在表达式中使用它们时,它们不会“传递”到 lambda 表达式中——它们与外部变量是相同的引用。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 是否将值传递给 Lambda? 的相关文章

随机推荐