为什么声明与for循环同名的变量会导致C#中的变量名称歧义与Java相对

时间:2015-03-05 00:05:08

标签: java c# scope

至于Java难民,这段代码非常好。 int i仅存在于循环中,第二个int i不会产生冲突。所以应该没有问题。 Altough,C#中的这段代码导致i变量歧义。

static void Main(String[] args)
{
    for (int i = 0; i < 10; i++)
    {
    }
    int i = 0;
    while (i < 10) { i++; }
}

因此(beign naive)此代码应该有效

static void Main(String[] args)
{
    for (int i = 0; i < 10; i++)
    {
    }
    i++;
}

但它表示未声明i变量,如预期的那样。 最后,只在块中嵌套第二个int i可以修复歧义:

static void Main(String[] args)
{
    for (int i = 0; i < 10; i++)
    {
    }
    {
        int i = 0;
        while (i < 10) { i++; }
    }
}

问题是:在给出的第一个例子中,C#语言的规则/机制会导致变量名称歧义吗?

VS2013的版画屏幕:

enter image description here

0 个答案:

没有答案