{ var foo = ""; // This can't be done in C#. Why is that? /*-6ren">
gpt4 book ai didi

C# 匿名函数作用域

转载 作者:行者123 更新时间:2023-11-30 18:56:01 29 4
gpt4 key购买 nike

var foo = "bar";

new Func<String>(() =>
{
var foo = ""; // This can't be done in C#. Why is that?

/* In JavaScript, this is perfectly valid, since this scope (the anonymous
function) is disconnected from the outer scope, and any variable declared
within this scope will not affect variables in the outer scope */

})()

最佳答案

实际上,即使在 javascript 中,它也不是完全断开的; javascript 允许词法闭包 - 所以如果没有 varfoo 的旧值应该仍然可用。

区别在于javascript选择允许你重新声明具有不同含义的名称(在内部范围内)。 C# 选择不这样做。

我发现 C# 版本不太容易混淆!特别是当代码(在方法的更下方)期望谈论“旧”变量时,突然它开始查看"new"变量。

关于C# 匿名函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212201/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com