至于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的版画屏幕: