Nik*_*wal 5 .net c# linq scope
我读了这个问题(C#中lambda变量的范围是什么?)
但它是关于LINQ Query中的Lambda变量范围.
现在问我的问题
可以说我有一个非常简单的LINQ查询.
var Foo = FoobBar.Select(x => x);
var x = somefunction();
Run Code Online (Sandbox Code Playgroud)
编译说:A local variable 'x' cannot be declared in this scope because it would give a different meaning to 'x', which is already used in a 'child' scope to denote something else.
为什么会这样?当LINQ查询结束时,Lambda变量是否应该不存在?
编辑:在阅读答案后,我得出结论,它的外部x(从函数返回)其范围扩展到LINQ Query内.
它与LINQ无关,它与儿童范围有关.
例如:
foreach (var bar in FooBar.Bars)
{
var x = FooBar.GetFoo();
}
var x = new Foo();
Run Code Online (Sandbox Code Playgroud)
从编译器生成完全相同的错误消息.
要解决此问题,您只需将变量放在不同的(非嵌套)范围中.例如:
foreach (var bar in FooBar.Bars)
{
var x = FooBar.GetBar();
}
{
var x = new Foo();
}
Run Code Online (Sandbox Code Playgroud)