相关疑难解决方法(0)

使用子范围中使用的变量名称

我一直想知道为什么在C#中使用以前在子作用域中使用的变量名是不允许的.像这样:

if (true)
{
    int i = 1;
}

int i = 2;
Run Code Online (Sandbox Code Playgroud)

编译上面的代码会产生错误:

名为"i"的局部变量不能在此范围内声明,因为它会给"i"赋予不同的含义,"i"已在"子"范围内用于表示其他内容

然而,您也不能使用子范围中定义的变量.上面的代码在Java中运行得很好,我也看不出它在C#中也没有原因.我确信这是一个很好的理由,但它是什么?

c#

14
推荐指数
1
解决办法
4786
查看次数

为什么Lambda变量范围存在于LINQ查询之外?

我读了这个问题(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内.

.net c# linq scope

5
推荐指数
1
解决办法
1259
查看次数

标签 统计

c# ×2

.net ×1

linq ×1

scope ×1