聲明具有相同名稱的那些變量,我有以下代碼(生成給出的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