声明具有相同名称的那些变量,我有以下代码(生成给出的A,B的二次函数,以及c)
Func<double, double, double, Func<double, double>> funcGenerator = (a, b, c) => f => f * f * a + b * f + c;
截至目前为止,可爱。然后,如果我尝试声明一个名为a,b,c或f的变量,visual studio会弹出一个"A local variable named 'f' could not be declared at this scope because it would give a different meaning to 'f' which is used in a child scope."
基本上,这会失败,我不知道为什么,因为子范围甚至不会生成任何感。C#要疯了,当我在一个lambda
Func<double, double, double, Func<double, double>> funcGenerator =
(a, b, c) => f => f * f * a + b * f + c;
var f = 3; // Fails
var d = 3; // Fine
这是怎么回事?
这是如何产生任何意义?没有儿童范围。子范围意味着另一组{},其中引入了一个不同的变量,但这不会发生在这里。函数定义已经结束。 – Rubys 2010-04-13 14:25:32
如果在外部范围引入f,它在lambda中可用,它给f赋予不同的含义。这个不清楚的是什么? – flq 2010-04-13 14:29:25
Rubys,有*是*的范围。范围在C#中不需要'{}'。无关紧要的是'var f'上的文本上的lambda定义。 – 2010-04-13 14:30:01